*
参考地址: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"
*