Redis数据结构&命令手册

 

Redis数据结构&命令手册

 

 

Redis数据结构

  Redis可以存储键与5种不同数据结构之间的映射,这五种数据结构类型分别为STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)、ZSET(有序集合)。

  

 

STRING字符串

LIST列表

SET集合

HASH散列

Order-set有序集合

 

STRING字符串

1.set

set key value [ex 秒数]/[px 毫秒数] [nx]/[xx]
作用:创建string类型数据类型键值对 例子: Set a
1 ex 10:10秒有效 Set a 1 px 9000:9秒有效 注:ex,px不要同时写,否则以后面的有效期为准 Set a 1 ex 10 px 9000:实际有效期为9秒 nx:表示key不存在时,执行操作 Xx:表示key存在时,执行操作

2.mset

mset multi set :一次性设置多个键值
作用:一次设置多个键值对 例子:mset key1 v1 key2 v2...

3.get

get key
作用获取单个key的值

4.mget

mget key1 key2 ...
作用获取多个key的值

5.append

append key value
作用:把value追加到key的原值上

6.setrange

setrange key offset value
作用把字符串的offset偏移字节改成value(替换)
set word hello get word hello setrange word 2 ?? get word he??o 注意:如果偏移量》字符长度,该字符自动补0x00 set word hello setrange word 6get word hello\x00!

7.getrange

getrange key start stop
作用:获取字符串中【start,sop】范围的值
注意:对于字符串的下标,左数从0开始,右数从-1开始

set area chinese
getrange area 1 4
hine
getrange area 0 -3
Chine
注意:
1.start>=length,则返回空字符串
2.stop>=length,则截取至字符结尾
3.如果start所处位置在stop右边,返回空字符串

8.getset

getset key newvalue
作用:获取并返回旧值,设置新值
set status sleep
getset status wakeup
Sleep
get status
wakeup
getset status working

9.incr 

incr key 
作用:增加key的大小,增加1

10.decr

decr key 
作用:减少key的大小,减少1

11.decrby

decrby key value
作用:减少key的大小,减少value

12.incrby

incrby key value
作用:增加key的大小,增加value

13.incrbyfloat&decrbyfloat

incrbyfloat key value
作用:增加key的大小,增加value,value为float类型

14.setbit

setbit key offset value
设置offset对应二进制位上的值
返回:该位上的旧值
注意:如果offset过大,则会在中间填充0
Offset最大为2^32-1,可以推算出字符串的值最大为512M

set char A
setbit char  2 1
get char
a

set char a
setbit char  2 0
get char
A

15.bitop

bitop operation destkey key1 [key2 ...]
作用:对key1,key2、keyN左operation,并将结果保存到destkey上
operation可以是AND、OR、NOT、XOR

 

LIST列表

  Redis对链表(linked-list)结构的支持使得它在键值存储的世界中独树一帜。一个列表可以有序地存储多个字符串。

1.lpush

lpush key value
作用:在链表头部插入数据 lpush character a

2.rpush

rpush key value
作用:在尾部插入数据 rpush character b

3.lpop&rpop

lpop key
作用:返回并删除链表头的元素 rpop key
作用:返回并删除链表尾的元素

4.lrange

lrange key start stop
作用:返回链表中【start stop】的元素 注:左数从0开始,右数从
-1开始
例子: lrange character
1 3

5.lrem

lrem key count value:从key链表中删除value值
注:删除count的绝对值个value后结束
Count>0 从表头删除
Count<0 从表尾删除
lrem key 2 a:从头开始删除两个a
lrem key -2 a:从尾开始删除两个a

6.ltrim

ltrim key start stop
作用:剪切key对应的链接剪切【start,stop】一段,并把该段重新赋给key

7.lindex

lindex key index
作用:返回index索引上的值
例子: lindex key
2

8.llen

llen key 
作用:返回链表长度

9.linsert

linsert key after|before search value
在key链表中寻找search,并在search值前后,插入value
注:如果在链表中有多个相同的值,一旦找到一个search后,命令就结束了,因此不会插入多个value
rpush num 1 3 6 8 9
linsert num before 3 2 
1 2 3 6 8 9
linsert num after  6 7
1 2 3 6 7 8 9

10.rpoppush

rpoplpush source dest
作用:将一个(source)链表尾部的元素删除并添加到另一个链表(dest)的头部
例子: rpush task a b c d rpush job rpoplpush task job 场景:task
+job完成安全的队列 1.rpoplpush task job 2.接收返回值,并做业务处理 3.如果成功,rpop job清除任务,如果不成功,下次从job里再次取任务

11.brpop&blpop

brpop,blpop key timeout
等待弹出key的尾/头元素
Timeout为等待超时时间
如果timeout为0,一直等待
场景:长轮询Ajax在线聊天

 

 

SET集合

 

 Redis地集合和列表都可以存在多个字符串,它们之间的不同在于,列表可以存储多个相同的字符串,而集合则通过使用散列来保证自己存储的每个字符串都是各不相同的(这些散列表只有键,但没有与键相关联的值)

 Redis集合使用无序方式存储元素,所以用户不能使用列表那样,将元素推入集合的某一端,或者从集合的某一端弹出元素。

集合的性质:

  1. 无序性
  2. 确定性:
  3. 唯一性

:stringlink的命令中,可以通过range来访问string中的某个字符或某几个元素,但,因为集合的无序性,无法通过下标或范围来访问部分元素

因此想访问元素,要么随机选一个,要么都选

 

1.sadd

sadd key value1 value2
作用:创建集合并往集合key中增加元素

2.srem

srem value1 value2
作用:删除集合中集为value1 value2的元素
返回值:忽略不存在的元素后,真正删除掉的元素的个数

3.spop

spop key
作用:返回并删除集合key中1个随机元素

4.srandmember

srandmember  key
作用:返回集合key中随机的1一个元素

5.sismember

sismember key value
作用:判断value是否key集合
是返回1,否返回0

6.srandmember

srandmember key
作用:返回集合key中随机的一个元素

7.sismember

sismember key value
作用:判断value是否在key集合中
是返回1,否返回0

8.smembers

smembers key
作用:返回集合中的所有元素

9.scard

scard key
作用:返回集合中元素的个数

10.smove

smove source dest value
作用:把source中的value删除,并添加到dest集合中

11.sinter

Sinter key1 key2 key3
作用::求出key1 key2 key3 三个集合中的交集,并返回
例子:
sadd s1 0 2 3 4
sadd s2 0 5 8 9
sadd s3 0 2 4 7
sinter s1 s2 s3
0

12.sinterstore

sinterstore dest key1 key2 key3
作用:求出key1,key2,key3 三个集合中的交集,并赋值给dest

13.suion

suion key1 key2...keyn
作用:求出key1,key2,keyn的并集,并返回

14.sdiff

sdiff key1 key2 key3
作用:求出key1与key2,key3的差集

 

 

HASH散列

Redis的散列可以存储多个键值对之间的映射,和字符串一样,散列存储既可以是字符串又可以是数字值,并且用户同样可以对散列的数字值执行自增操作或者自减操作。

 

1.hset

hset key field value
作用:把key中 field域的值设为value
注:如果没有field域,直接添加,如果有,则覆盖原field域的值

2.hmset

hmset key field1 value1 [field2 value2 field3 value3 ......fieldn valuen]
作用:设置field1->N个域。对应的值是value->N

3.hget

hget key field
作用:返回key中的field域的值

4.hmget

hmget key field1 field2 fieldN
作用:返回key中的field fieldN域的值

5.hgetall

hgetall key
作用:返回key中所有域与其值

6.hdel

hdel key field
作用:删除key中field域

7.hlen

hlen key
作用:返回key中元素的数量

8.hexists

hexists key field
作用:判断key中有没有field域

9.hincrby

hincrby key field value
作用:是把key中的field域的值增长整型值value

10.hincrbyfloat

hincrbyfloat key field value
作用:是把key中的field域增长浮点值value

11.hkeys

hkeys key
作用:返回key中所有field

12.kvals

kvals key
作用:返回key中所有value

 

 

 

 

Order-set 有序集合

 

有序集合和散列一样,都用于存储键值对:有序集合的键被称为成员(member),每个成员都是各不相同的;而有序集合的值则被称为分值(socre),分值必须为浮点数。

有序集合是redis里面唯一一个既可以根据成员访问元素(这一点和散列一样),又可以根据分值以及分值的排列顺序来访问元素的结构。

 

1.zadd

zadd key score1 value1 score2 value2...
作用:创建并添加元素
例子: zadd
class 12 lily 13 lucy 18 lie

2.zrem

zrem key value1 value2...
作用:删除集合钟的元素

3.zremrangebyscore

zremrangebyscore key min max
作用:按照socre来删除元素,删除score在[min,max]之间的元素

4.zremrangebyrank 

zremrangebyrank key start end
作用:按排名删除元素,删除名次[start,end]之间的元素

5.zrank

zrank key member
作用:查询member的排名(升序0名开始)

6.zrevrank

zrevrank key memeber
作用:查询member的排名(降序0名开始)

7.zrange

zrange key start stop [withscores]
作用:把集合排序后,返回名次[start stop]的元素
默认是升序排列
withscores:是把score也打印出来

8.zrevrange

zrevrange key start stop
作用:把集合降序排序取名字[start,stop]之间的元素

9.zrangbyscore

zrangbyscore key min max [withscores] [limit offset N]
作用:集合(升序)排序后取socre在[min,max]内的元素
并跳过offset个,取出N个

10.zcard

zcard key
作用:返回元素个数

11.zcount

zcount key min max
作用:返回[min,max]区间内元素的数量

12.zinterstore

zinterstore destination numkeys key1 [key2...] 
[WEIGHTS weight [weight ...]]
[aggreagte sum|min|max]

求key1,key2的交集,key1,key2的权重分别是weight1,weight2
聚合方法:sum、min、max
聚合的结果保存在dest集合内
Numkeys:计算交集的key的个数
weights,aggregate如何理解?
如果有交集,交集元素又有score,score怎么处理?


zadd lisi 3 cat 5 dog 6 horse
zadd wang 2 cat 4 dog 8 horse 1 donkey
zinterstore result 2 lisi wang 
zrange result 0 -1 [withscores]

zinterstore result 2 lisi wang aggregate min
zrange result 0 -1 [withscores]

zinterstore result 2 lisi wang aggregate max
zrange result 0 -1 [withscores]

 

posted @ 2019-05-26 17:04  -零  阅读(330)  评论(0编辑  收藏  举报