redis常用名命令
字符串(String)
- set 设置key
- get 获取key
- append 追加string
- mset 设置多个键值对
- mget 获取多个键值对
- del 删除key
- incr 递增+1
- decr 递减-1
示例代码
127.0.0.1:6379> set name 'yu'   #设置key
OK
127.0.0.1:6379> get name    #获取value
"yu"
127.0.0.1:6379> set name 'yuchao'  #覆盖key
OK
127.0.0.1:6379> get name    #获取value
"yuchao"
127.0.0.1:6379> append name ' dsb'   #追加key的string
(integer) 10
127.0.0.1:6379> get name  #获取value
"yuchao dsb"
127.0.0.1:6379> mset user1 'alex' user2 'xiaopeiqi'    #设置多个键值对
OK
127.0.0.1:6379> get user1    #获取value
"alex"
127.0.0.1:6379> get user2    #获取value
"xiaopeiqi"
127.0.0.1:6379> keys *      #找到所有key
1) "user2"
2) "name"
3) "user1"
127.0.0.1:6379> mget user1 user2 name   #获取多个value
1) "alex"
2) "xiaopeiqi"
3) "yuchao dsb"
127.0.0.1:6379> del name        #删除key
(integer) 1
127.0.0.1:6379> get name        #获取不存在的value,为nil
(nil)
127.0.0.1:6379> set num 10    #string类型实际上不仅仅包括字符串类型,还包括整型,浮点型。redis可对整个字符串或字符串一部分进行操作,而对于整型/浮点型可进行自增、自减操作。
OK    
127.0.0.1:6379> get num
"10"
127.0.0.1:6379> incr num    #给num string 加一 INCR 命令将字符串值解析成整型,将其加一,最后将结果保存为新的字符串值,可以用作计数器
(integer) 11
127.0.0.1:6379> get num  
"11"
127.0.0.1:6379> decr num      #递减1  
(integer) 10
127.0.0.1:6379> decr num    #递减1
(integer) 9
127.0.0.1:6379> get num
"9"
列表(List)
- lpush 从列表左边插
- rpush 从列表右边插
- lrange 获取一定长度的元素 lrange key start stop
- ltrim 截取一定长度列表
- lpop 删除最左边一个元素
- rpop 删除最右边一个元素
- lpushx/rpushx key存在则添加值,不存在不处理
示例代码
lpush duilie 'alex' 'peiqi' 'ritian'  #新建一个duilie,从左边放入三个元素
llen duilie  #查看duilie长度
lrange duilie 0 -1  #查看duilie所有元素
rpush duilie 'chaoge'   #从右边插入chaoge
lpushx duilie2  'dsb'  #key存在则添加 dsb元素,key不存在则不作处理
ltrim duilie 0 2  #截取队列的值,从索引0取到2,删除其余的元素
lpop #删除左边的第一个
rpop #删除右边的第一个
集合(Set)
redis的集合,是一种无序的集合,集合中的元素没有先后顺序。
集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:
- sadd/srem 添加/删除 元素
- sismember 判断是否为set的一个元素
- smembers 返回集合所有的成员
- sdiff 返回一个集合和其他集合的差异
- sinter 返回几个集合的交集
- sunion 返回几个集合的并集
示例代码
sadd zoo  wupeiqi yuanhao  #添加集合,有三个元素,不加引号就当做字符串处理
smembers zoo  #查看集合zoo成员
srem zoo  wupeiqi #删除zoo里面的alex
sismember zoo wupeiqi  #返回改是否是zoo的成员信息,不存在返回0,存在返回1
sadd zoo wupeiqi   #再把wupeiqi加入zoo
smembers zoo  #查看zoo成员
sadd zoo2 wupeiqi mjj #添加新集合zoo2
sdiff zoo zoo2 #找出集合zoo中有的,而zoo2中没有的元素
sdiff zoo2  zoo  #找出zoo2中有,而zoo没有的元素
sinter zoo zoo1   #找出zoo和zoo1的交集,都有的元素
sunion  zoo zoo1  #找出zoo和zoo1的并集,所有的不重复的元素
有序集合(sorted set)
用来保存需要排序的数据,例如排行榜,成绩,工资等。
实例:
- 利用有序集合的排序,排序学生的成绩:
点击查看代码
127.0.0.1:6379> ZADD mid_test 70 "alex"
(integer) 1
127.0.0.1:6379> ZADD mid_test 80 "wusir"
(integer) 1
127.0.0.1:6379> ZADD mid_test 99 "yuyu"
- 排行榜,zreverange 倒叙 zrange正序:
点击查看代码
127.0.0.1:6379> ZREVRANGE mid_test 0 -1 withscores
1) "yuyu"
2) "99"
3) "wusir"
4) "80"
5) "xiaofneg"
6) "75"
7) "alex"
8) "70"
127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores
1) "alex"
2) "70"
3) "xiaofneg"
4) "75"
5) "wusir"
6) "80"
7) "yuyu"
8) "99"
- 移除有序集合mid_test中的成员,xiaofeng给移除掉
点击查看代码
127.0.0.1:6379> ZREM mid_test xiaofneg
(integer) 1
127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores
1) "alex"
2) "70"
3) "wusir"
4) "80"
5) "yuyu"
6) "99"
- 返回有序集合mid_test的基数
点击查看代码
127.0.0.1:6379> ZCARD mid_test
(integer) 3
- 返回成员的score值
点击查看代码
127.0.0.1:6379> ZSCORE mid_test alex
"70"
- zrank返回有序集合中,成员的排名。默认按score,从小到大排序。
点击查看代码
127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores
1) "alex"
2) "70"
3) "wusir"
4) "80"
5) "yuyu"
6) "99"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> ZRANK mid_test wusir
(integer) 1
127.0.0.1:6379> ZRANK mid_test yuyu
(integer) 2
哈希(Hash)
哈希结构就是  k1   ->  k1 : v1     如同字典 套字典  { k1 : { k2: v2 }  }   ,取出v2 必须  k1,取出k2
hash即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。
hash存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。
- hset 设置散列值
- hget 获取散列值
- hmset 设置多对散列值
- hmget 获取多对散列值
- hsetnx 如果散列已经存在,则不设置(防止覆盖key)
- hkeys 返回所有keys
- hvals 返回所有values
- hlen 返回散列包含域(field)的数量
- hdel 删除散列指定的域(field)
- hexists 判断是否存在
点击查看代码
redis hash是一个string类型的field和value的映射表
语法  hset key field value  
hset news1   title "first news title" #设置第一条新闻 news的id为1,添加数据title的值是"first news title"
hset news1 content "news content"    #添加一个conntent内容
hget news1 title   #获取news:1的标题
hget news1  content  #获取news的内容
hmget news1  title content   #获取多对news:1的 值
hmset news2 title "second news title" content "second Contents2"   #设置第二条新闻news:2 多个field
hmget news2 title  content #获取news:2的多个值
hkeys news1   #获取新闻news:1的所有key
hvals news1   #获取新闻news:1的所有值
hlen news1    #获取新闻news:1的长度
hdel news1 title   #删除新闻news:1的title
hlen news1     #看下新闻news:1的长度
hexists news1 title    #判断新闻1中是否有title,不存在返回0,存在返回1
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号