redis命令

*

 参考地址:redis学习教程之一基本命令

一,基本类型

1,简单key-value

set key value:设置key的值,若存在则覆盖
setnx key value:SET if Not eXists,若存在则不操作。
MSET key1 value1 key2 value2 ... keyN valueN:设置这些key的值,若存在则覆盖
MSETNX key1 value1 key2 value2 ... keyN valueN:同mset,但如果其中一个key已经存在了,则都不设置。这些操作都是原子的。
rename key: 重命名

append key value:向key的字符串追加拼接。
get key:获取key对应的值 MGET key1 key2 ... keyN:获取这些key对应的值 
EXISTS key:查看是否存在该元素。
GETSET key value:获取该元素的值,并给该元素设置新值。(通常和incr搭配使用,比如一个mycount一直incr,然后达到某些情况需要清零,清零之前需要知道mycount的值).
del key:删除元素
RENAME oldkey newkey:重命名

2,有序队列 type: list

  key: v1,v2,... vn

rpush keyList value:向keyList添加元素,向后加,r表示右边

lpush keyList value:向keyList左边添加元素,LPUSH puts the new value at the start of the list.

lrange keyList beginIndex endIndex:获取keyList的元素,用两端的索引取出子集,endIndex=-1则表示全部取出

llen keyList :获取keyList的长度大小
lpop keyList:取出并移除keyList第一个元素,左边的元素
rpop keyList:取出并移除keyList最后一个元素,右边的元素
LINDEX key index:获取该索引下的元素。
lrem key count value:删除count个value。(count为正数,从头开始,删除count个value元素;count为负,则从尾部向头删除|count|个value元素;count为0,则所有的元素为value的都删除)
LSET key index value:设置索引为index下的元素为value.超出索引范围报错。
LTRIM key start end:清空索引在start 和end之外的元素,索引从0开始,两端保留,两端之外的清空。
RPOPLPUSH srckey dstkey:源队列srckey,目标队列dstkey,将srckey的最后一个移除,并放到dstkey的第一个。

3,无序且唯一集合 type:set

sadd key value : 向set添加元素
srem key value :从set中移除元素
smembers key : 取出所有set元素
SISMEMBER key value: 查看value是否存在set中
SUNION key1 key2 ... keyN:将所有key合并后取出来,相同的值只取一次
scard key : 获取set中元素的个数
SRANDMEMBER key: Return a random element from a Set, without removing the element.随机取出一个
SDIFF key1 key2 ... keyN:获取第一set中不存在后面几个set里的元素。
SDIFFSTORE dstkey key1 key2 ... keyN:和sdiff相同,获取key1中不存在其他key里的元素,但要存储到dstkey中。
SINTER key1 key2 ... keyN:取出这些set的交集
SINTERSTORE dstkey key1 key2 ... keyN:取出这些key的交集并存储到dstkey
SMOVE srckey dstkey member:将元素member从srckey中转移到dstkey中,这个操作是原子的。

*

4,有序集合sorted set,type: zset

ZADD key score member:向有序set中添加元素member,其中score为分数,默认升序;
ZRANGE key start end [WITHSCORES]:获取按score从低到高索引范围内的元素,索引可以是负数,-1表示最后一个,-2表示倒数第二个,即从后往前。withscores可选,表示获取包括分数。
ZREVRANGE key start end [WITHSCORES]:同上,但score从高到低排序。
ZCOUNT key min max:获取score在min和max范围内的元素的个数
ZCARD key:获取集合中元素的个数。
ZINCRBY key increment member:根据元素,score原子增加increment.
ZREMRANGEBYSCORE key min max:清空集合内的score位于min和max之间的元素。
ZRANK key member:获取元素的索引(照score从低到高排列)。
ZREM key member:移除集合中的该元素
ZSCORE key member:获取该元素的score

*

5,对象存储hashes,type:hash

HSET key field value:key是对象名,field是属性,value是值;
HMSET key field value [field value ...]:同时设置多个属性
HGET key field:获取该对象的该属性
HMGET key field value [field value ...]:获取多个属性值
HGETALL key:获取对象的所有信息
HKEYS key:获取对象的所有属性
HVALS key:获取对象的所有属性值
HDEL key field:删除对象的该属性
HEXISTS key field:查看对象是否存在该属性
HINCRBY key field value:原子自增操作,只能是integer的属性值可以使用;
HLEN key: Return the number of entries (fields) contained in the hash stored at key.获取属性的个数。

*

*

redis 127.0.0.1:6379> hmset animal name cat age 12 food fish
OK
redis 127.0.0.1:6379> hgetall
(error) ERR wrong number of arguments for 'hgetall' command
redis 127.0.0.1:6379> hgetall animal
1) "name"
2) "cat"
3) "age"
4) "12"
5) "food"
6) "fish"
redis 127.0.0.1:6379> hvals animal
1) "cat"
2) "12"
3) "fish"
redis 127.0.0.1:6379> hget animal name
"cat"
redis 127.0.0.1:6379> hexists animal voice
(integer) 0
redis 127.0.0.1:6379> hlen animal
(integer) 3

二,sort排序

sort key [by pattern] [limit startcount] [get pattern] [asc|desc] [alpha] [store dstkey]

命令如下

redis 127.0.0.1:6379> sort uid by user_level_* get user_name_*
1) "jack"
2) "peter"
3) "mary"
4) "admin"
redis 127.0.0.1:6379> sort uid get # get user_name_* get user_level_*
 1) "1"
 2) "admin"
 3) "9999"
 4) "2"
 5) "jack"
 6) "10"
 7) "3"
 8) "peter"
 9) "25"

uid  user_name_{uid}  user_level_{uid}

1    admin        9999

2    jack          10

3    peter          25

4    mary          70

uid存在一个list中

user_name_1 admin类似这样的,则是简单的key-valu

get #是获得排序的键

也可以通过hash去保存对象,然后进行key查找

redis 127.0.0.1:6379> hmset user_info_1 name admin level 9999
OK
redis 127.0.0.1:6379> hmset user_info_2 name jack level 10
OK
redis 127.0.0.1:6379> hmset user_info_3 name peter level 25
OK
redis 127.0.0.1:6379> hmset user_info_4 name mary level 70
OK
redis 127.0.0.1:6379> sort uid by user_info_*->level
1) "2"
2) "3"
3) "4"
4) "1"
redis 127.0.0.1:6379> sort uid by user_info_*->level get user_info_*->name
1) "jack"
2) "peter"
3) "mary"
4) "admin"

排序

redis 127.0.0.1:6379> rpush nums 1 3 5 7 9
(integer) 5
redis 127.0.0.1:6379> rpush nums 2 4 6 8 10
(integer) 10
redis 127.0.0.1:6379> lrange nums 0 -1
 1) "1"
 2) "3"
 3) "5"
 4) "7"
 5) "9"
 6) "2"
 7) "4"
 8) "6"
 9) "8"
10) "10"
redis 127.0.0.1:6379> sort nums store snums
(integer) 10
redis 127.0.0.1:6379> lrange snums 0 -1
 1) "1"
 2) "2"
 3) "3"
 4) "4"
 5) "5"
 6) "6"
 7) "7"
 8) "8"
 9) "9"
10) "10"

多个命令组成一个原子性操作

redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> keys *list
QUEUED
redis 127.0.0.1:6379> set miao aaa
QUEUED
redis 127.0.0.1:6379> get miao
QUEUED
redis 127.0.0.1:6379> exec
1) 1) "alist"
   2) "mlist"
2) OK
3) "aaa"

*

有问题在公众号【清汤袭人】找我,时常冒出各种傻问题,然一通百通,其乐无穷,一起探讨


原文地址:https://www.cnblogs.com/qingmaple/p/5983529.html