redis API

key:string value:以下五种类型

1、String

set key value:    不管key是否存在,都设置

setnx key value:    key不存在,才设置

setex key seconds  value:    将值value关联到key,并将key的过期值设为seconds(以秒为单位),在设置缓存时候特别有用。

PSETEX key milliseconds value:这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。

mset  key1 value key2 value... :    同时设置一个或多个 key-value 对

msetnx  key1 value key2 value... :    同时设置一个或多个 key-value 对,当且仅当所有的key值都不存在

setrange key offset value : 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

get key:    获取指定 key 的值。

mget :   获取所有(一个或多个)给定 key 的值。

getrange key start end :    返回 key 中字符串值的子字符

getbit key offset :    对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

getset key value :    将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

incr key:    将 key 中储存的数字值增一。

decr key:    将 key 中储存的数字值减一。

incrby key increment:    将 key 所储存的值加上给定的增量值(increment) 。

decrby key decrement:        key 所储存的值减去给定的减量值(decrement) 。

append key value:    如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。

strlen:    返回 key 所储存的字符串值的长度。

incrbyfloat:   将 key 所储存的值加上给定的浮点增量值(increment) 。 

del key:    删除key所存储的值。

[root@tcy1 tcy]# docker exec -it ab54741166e1 redis-cli
127.0.0.1:6379> set tcy 21-22
OK
127.0.0.1:6379> setnx tcy 22
(integer) 0
127.0.0.1:6379> mset m1 1 m2 2 m3 3
OK
127.0.0.1:6379> mget m1 m2 m3
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> mset m1 4 m4 5
OK
127.0.0.1:6379> msetnx m1 22 m5 7
(integer) 0
127.0.0.1:6379> get tcy 21-22-24
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> getset tcy 21-22-24
"21-22"
127.0.0.1:6379> append tcy -26
(integer) 11
127.0.0.1:6379> get tcy
"21-22-24-26"
127.0.0.1:6379> del tcy
(integer) 1
127.0.0.1:6379> get tcy
(nil)

2、Hash

hget key field:     获取存储在哈希表中指定字段的值。

hset key field value:     将哈希表 key 中的字段 field 的值设为 value 。

hdel key field1 [field2]:     删除一个或多个哈希表字段

hgetall key:     获取在哈希表中指定 key 的所有字段和值

127.0.0.1:6379> hset user:tcy:info name tcy
(integer) 1
127.0.0.1:6379> hget user:tcy:info name
"tcy"
127.0.0.1:6379> hset user:tcy:info age 22
(integer) 1
127.0.0.1:6379> hgetall user:tcy:info
1) "name"
2) "tcy"
3) "age"
4) "22"
127.0.0.1:6379> hdel user:tcy:info age
(integer) 1
127.0.0.1:6379> hgetall user:tcy:info
1) "name"
2) "tcy"

hexists key field:    查看哈希表 key 中,指定的字段是否存在。

hlen key:    获取哈希表中字段的数量

127.0.0.1:6379> hgetall user:tcy:info
1) "name"
2) "tcy"
127.0.0.1:6379> hexists user:tcy:info name
(integer) 1
127.0.0.1:6379> hlen user:tcy:info
(integer) 1

hmset key field1 value1 [field2 value2 ]  :    同时将多个 field-value (域-值)对设置到哈希表 key 中。

hmget key field1 [field2] 获取所有给定字段的值 :     

127.0.0.1:6379> hmset user:tcy2:info name tcy2 age 21-22
OK
127.0.0.1:6379> hmget user:tcy2:info name age
1) "tcy2"
2) "21-22"

hincrby key field increment:    为哈希表中的字段值加上指定增量值。

127.0.0.1:6379> hset key1 field1 2
(integer) 1
127.0.0.1:6379> hincrby key1 field1 1
(integer) 3

hgetall key:     获取在哈希表中指定 key 的所有字段和值

hvals key:    获取哈希表中所有值(value)

hkeys key:    获取所有哈希表中的字段(field)

hlen key:    获取哈希表中字段的数量

127.0.0.1:6379> hgetall user:tcy:info
1) "name"
2) "tcy"
3) "age"
4) "22"
5) "hobby"
6) "sport"
127.0.0.1:6379> hvals user:tcy:info
1) "tcy"
2) "22"
3) "sport"
127.0.0.1:6379> hkeys user:tcy:info
1) "name"
2) "age"
3) "hobby"
127.0.0.1:6379> hlen user:tcy:info
(integer) 3
127.0.0.1:6379> 

3、List

列表:有序,可以重复,左右两边插入弹出

lpush + lpop = Stack

lpush + rpop = queue

lpush + ltrim = capped collection

lpush + brpop = Message Queue

增:

rpush key value1 value2 ...valueN :    从列表右边插入值

lpush key value1 value2 ...valueN:    从列表左端插入值

linsert key before | after value newValue:     在列表的元素前或者后插入元素

删:

lpop key:    从列表左边弹出一个item

rpop key:     从列表右边弹出一个item

lrem key count value:    移除列表元素,根据count的值,从列表中删除所有value相等的项

count > 0,从左到右,删除最多count个value相等的项

count < 0,从右到左,删除最多math.abs(count)个value相等的项

count=0,删除所有value相等的项

lrem listkey 0 a    :    把列表中所有value为a的值全部删除

lrem listkey -1 a    :    列表中,从右向左,把value为a的值删除1个

lrem listkey 2 a    :      列表中,从左向右,把value为a的值删除2个

ltrim key start end :    对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

ltrim listkey 1 4 : 只保留列表索引在1~4中的值

查:

lrange key start end(包含end) :获取列表指定索引范围所有item     o(n)

lrange listkey 0 2 : 查找前三个元素

lrange listkey 1 -1: 查找第二个元素到最后一个元素

lindex key index :    获取列表指定索引的item

lindex listkey 0 :获取第一个元素

lindex listkey -1:获取最后一个元素

llen key : 获取列表长度             o(1)

改:

lset key index newValue : 设置列表指定索引值为newValue      o(n)

lset listkey 2 tcy :     把下标为2的值设置为tcy

blpop key [key2] timeout :    移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。(将对各列表加入timeout)

brpop key [key2] timeout :    移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

上面两个命令做消息队列时很有帮助:

127.0.0.1:6379> rpush mylist tcy tcy2 tcy3
(integer) 3
127.0.0.1:6379> lrange 0 -1
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange listkey 0 -1
(empty list or set)
127.0.0.1:6379> lrange mylist 0 -1
1) "tcy"
2) "tcy2"
3) "tcy3"
127.0.0.1:6379> lpush mylist tcy4
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "tcy4"
2) "tcy"
3) "tcy2"
4) "tcy3"
127.0.0.1:6379> rpop mylist
"tcy3"
127.0.0.1:6379> lrange 0 -1
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange mylist 0 -1
1) "tcy4"
2) "tcy"
3) "tcy2"
127.0.0.1:6379> lset mylist 1 tcy_changed
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "tcy4"
2) "tcy_changed"
3) "tcy2"
127.0.0.1:6379> ltrim mylist 1 2
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "tcy_changed"
2) "tcy2"

4、Set 编码可以是intset或者hashtable

增:

sadd key member1 [member2] :   向集合添加一个或多个成员 o(1)

删:

srem key member1 [member2] :   移除集合中一个或多个成员 o(1)

查:

scard key :    获取集合的成员数

sismember key memeber:    判断 member 元素是否是集合 key 的成员

srandmember key count:    从集合中随机挑选count个元素返回

smembers key:    返回集合中的所有成员(无序)(元素太多,会阻塞)

spop key:    移除并返回集合中的一个随机元素

集合间:

sunion key1 [key2]:    返回所有给定集合的并集

sunionstore destination key1 [key2] :    返回给定所有集合的并集并存储在 destination 中

sinter key1 [key2]:    返回给定所有集合的交集

sinterstore destination key1 [key2] :    返回给定所有集合的交集并存储在 destination 中

sdiff key1 [key2]:    返回给定所有集合的差集

sdiffstore destination key1 [key2] :    返回给定所有集合的差集并存储在 destination 中

127.0.0.1:6379> sadd user:tcy22 felme sports foods bananas
(integer) 4
127.0.0.1:6379> smembers user:tcy22
1) "bananas"
2) "sports"
3) "foods"
4) "felme"
127.0.0.1:6379> spop user:tcy22
"bananas"
127.0.0.1:6379> smembers user:tcy22
1) "sports"
2) "foods"
3) "felme"
127.0.0.1:6379> srandmembers user:tcy22 3
(error) ERR unknown command 'srandmembers'
127.0.0.1:6379> srandmember user:tcy22 3
1) "sports"
2) "foods"
3) "felme"
127.0.0.1:6379> scard user:tcy22
(integer) 3
127.0.0.1:6379> sismember user:tcy22 test
(integer) 0

5、Zset

有序集合:集合元素按分值从小到大进行排序。

编码可以是ziplist或者skiplist,当有序集合保存的元素数量小于128个;有序集合保存的所有元素成员的长度都小于64字节。使用ziplist。

增:

zadd key score1 member1 [score2 member2] :向有序集合添加一个或多个成员,或者更新已存在成员的分数 o(logN)

删:

zrem key member [member ...] : 移除有序集合中的一个或多个成员       o(1)

zremrangebyrank key start stop : 移除有序集合中给定的排名区间的所有成员 o(log(n)+m) 

zremrangebyscore key min max :移除有序集合中给定的分数区间的所有成员  o(log(n)+m)

zrevrange key start stop [WITHSCORES] :返回有序集中指定区间内的成员,通过索引,分数从高到底
zrevrankbyscore key max min [WITHSCORES] :返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrank key member :返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

查:

zscore key member : 返回有序集中,成员的分数值                    o(1)

zcard key : 获取有序集合的成员数                                               o(1)

zrank key member : 返回有序集合中指定成员的索引

zcount key minScore maxScore :  计算在有序集合中指定区间分数的成员数      o(log(n)+m)

zlexcount key min max :  在有序集合中计算指定字典区间内成员数量

zrange key start end [withscores] : 通过索引区间返回有序集合成指定区间内的成员(是否带分值) o(log(n)+m)

zrangebylex key min max [LIMIT offset count] 
通过字典区间返回有序集合的成员

改:

zincrby key increScore element : 增加或减少元素的分数         o(1)

猜你喜欢

转载自blog.csdn.net/qq_36183935/article/details/80802039