redis类型总结

一,Key类型: 

1.       Del key 删除key

2.       Dump key 返回key对应的序列化数据

3.       Exsits key 判断key是否存在

4.       EXPIRE key seconds 设置key的过期时间(秒)

5.       Expireat key timestamp 设置key在指定的时间戳过期

6.       PEXPIRE key milliseconds 设置key的过期时间(微秒)

7.       PEXPIREAT key timestamp-milliseconds设置在指定的时间戳过期(精确到微秒)

8.       Keys pattern 返回满足pattern的所有key(检索所有前缀key时非常有用)

9.       Migrate host port keydestination-db timeout 迁移key

MIGRATE 127.0.0.1 6379 key2 0 1000

10.   Move key db 将key移到db

       Move key1 2

      Select 2

      dump key1

11.   object refcount key 返回引用个数

object encoding key 返回key的类型

object idletime key 返回key空闲idle的时间,即从上次被访问到现在的时间(单位秒)

12.   persist key 设置key永久化存储

13.   pttl key 返回key的存活时间(微秒)

14.   ttl key 返回key的存活时间(秒)

15.   randomkey 从已经存在的key空间中,随机返回一个key

16.   rename key newkey 重命名key

17.   renamex key newkey 如果newkey不存在,重命名key

18.   restore key ttl serialized-value将dump后序列化的数据重新存储(可以使用migrate命令)

19.   sort key alpha 排序

      sort list1 alphalimit 1 1 desc

      sort list1 alphalimit 1 1 asc

20.   type key 返回key的类型

21.   scan cursor [match pattern][count count]  扫描所有的key,返回是数组,第一个为下一个cursor值,第二个为对于的key

       127.0.0.1:6379> scan0 match k* count 2

1)"4"

2) 1)"k9"

127.0.0.1:6379>scan 4 match k* count 2

1)"5"

2) 1)"k3"

   2) "k1"

127.0.0.1:6379>scan 5 match k* count 2

1)"0"

2) 1)"key1"

sscan hscan zscan 第一个参数是对应的key名,其他参数同上

sscan sets type

hscan hash type

zscan sorted sets type

 

二 string操作: 

1.       append key value 追加写,如果key不存在,则创建key,最好先判断key的类型

2.       setbit key offset value 设置key对应offset偏移量的值

3.       bitcount key [start end] 返回val中bit位为1的个数

bit使用场景

例如目前流行的签到功能

1号签到 setbit online_userid 1 1

3号签到 setbit online_userid 3 1

…….

可以根据偏移俩计算最近一个月的签到量,也可以展现用户签到的日期,存储非常小(存储一年只占365*1/8 = 46字节),且复杂度非常低O(1)

注:bitcount 中的start,end针对的是某一个字节,不是bit,所以计算最后一个月时,应该取 getrange key -4 -1,然后与0x7fffffff求and,最后计算bitcount

一周例子:

127.0.0.1:6379> get t

"@\xc0"

127.0.0.1:6379> getrange t -1 -1

"\xc0"

127.0.0.1:6379> set t-week"\xc0"

OK

127.0.0.1:6379> set t-week-mask"\x7f"

OK

127.0.0.1:6379> bitop and week t-weekt-week-mask

(integer) 1

127.0.0.1:6379> get week

"@"

127.0.0.1:6379> bitcount week

(integer) 1

127.0.0.1:6379>

4.       get key 返回key值

5.       bitop operation dest-key key1key2 key1和key2进行operation操作,然后存储到dest-key中,operation支持and,or,xor,not

6.       bitpos key bit [start end] 返回val中第一个是bit(0 || 1)的位置

7.       decr key 减1

8.       decrby key decrement 指定步长减法

9.       getbit key offset 获取bit位值

10.   getrange key start end 获取指定区间的子字符串

11.   getset key value 设置新值,返回老值

12.   incr key 加1

13.   incrby key increment 指定步长加法

14.   incrbyfloat key increment 指定步长加法

15.   mget key [key ..] 返回多个key对应的值

16.   mset key value [key value …] 设置多个key

17.   set key value [ex seconds] [pxmilliseconds] [nx|xx]

ex 有效时间秒

px 有效时间微秒

nx 不存在才set

xx 存在才set

18.   setex key seconds value 设置key,且有效时间秒

19.   psetex key milliseconds value 设置key,且有效时间为微秒

20.   setnx key value 不存在key,才set

21.   msetnx key value [key value…]  如果keys都不存在,才设置

22.   setbit key offset value 设置bit位

23.   strlen key 返回val长

24.   setrange key offset value 设置偏移量对应的value

 

三 hash类型:

hash key 是区分大小写的

1.       hset key field value 设置单个hash

2.       hmset key field value [fieldvalue …] 设置多个hash

3.       hget key field 获取特定field对应的值

4.       hmget key field [field …] 获取多个field对应的值,没有的话返回nil

5.       hgetall key 获取所有的field

6.       hkeys key 获取key下面所有的field

7.       hlen key 获取key下面field的个数

8.       hexists key field 判断key下面是否存在field

9.       hdel key field [field …] 删除key下面的field

10.   hvals key 获取key下面所有的值

11.   hsetnx key field value 当field不存在时,才创建

12.   hscan key cursor [matchpattern] [count count] 返回匹配的field相关信息,但是自测count不起作用

13.   127.0.0.1:6379> HGETALL KEY1

14.   1) "F1"

15.   2) "V1"

16.   3) "F2"

17.   4) "V2"

18.   5) "F11"

19.   6) "V11"

20.   7) "F121"

21.   8) "V121"

22.   127.0.0.1:6379> hscan KEY1 0MATCH F1* COUNT 1

23.   1) "0"

24.   2) 1) "F1"

25.      2) "V1"

26.      3) "F11"

27.      4) "V11"

28.      5) "F121"

29.      6) "V121"

30.   hincrby key field increment 自增

31.   hincrbyfloat key fieldincrement 自增

32.    

33.   lists类型

34.   blpop key [key …] timeout 将n个list进行left pop,但是timeout只支持秒级别,所以所有的key都没有数据,则会等待时间比较长,不利于引用

35.   brpop key [key …] timeout 同上(right pop)

36.   brpoplpush source destinationtimeout 备份用

37.   lindex key index 根据索引获取值

38.   linsert key BEFORE/AFTER PIVOTVALUE 在pivot值前/后插入新值

39.   llen key 返回list长度

40.   lpop key 从left pop一个value

41.   lpush key value [value …] 从left插入n个value

42.   lpushx key value 如果key对应的list存在,则push

43.   lrange key start stop 取中间一段

44.   lrem key count value 删除list中的值value

45.   count 为0 则全部删除

46.   count < 0 ,则从右删除count个

47.   count > 0 ,则从左删除count个

48.   ltrim key start stop 获取从start到end之间的元素

49.   lset key index value 按索引创建元素

50.   rpop key 从right pop元素

51.   rpoplpush source destination 备份用

52.   rpush key value [value …] 从right push元素

53.   rpushx key value 只有key存在时才push

 

四sets类型 不会有重复的list

1.       sadd key member [member …] 增加

2.       scard key 返回member个数

3.       sdiff key [key …] 返回存在第一个key但不存在其他key中的member

4.       sdiffstore destination key [key…] 同sdiff,但是将结果存在destination里面,返回个数

5.       sinter key [key …] 返回所有key的交集

6.       sinterstore destination key[key …] 同sinter,但是将结果存在destination里面,返回个数

7.       sismember key member 判断member是否存在

8.       smembers key 返回所有的member

9.       smove source destination member将member从一个set移动到另外一个set

10.   spop key 随即返回一个member,并且删除

11.   srandmember key [count] 返回随即n个member,并删除

12.   srem key member [member …] 删除member

13.    

14.   sunion key [key …] 合并key

15.   sunionstore destination key[key …] 同sunion ,但是存储到destination,返回个数

16.   sscan key cursor [matchpattern] [count count] 同scan

 

五 sorted set类型

1.       指定顺序的set

2.       zadd key score member [scoremember …] 增加,如果member已经存在,则会更新score的值,score为float类型

3.       zcard key 返回member个数

4.       zcount key min max 返回score在min和max之间的member个数

5.       zincrby key increment member 计算member对应的score(加),如果member不存在,则增加一条记录

6.       zinterscore destination numkeyskey [key …] [weights weight [weight …]] 计算所有key的交集,score按权重weights计算

 

六 hyperloglog类型

通过hyperloglog算法,计算基数的个数

1.       pfadd key element [element …] 增加元素

2.       pfcount key [key …] 计算个数

3.       pfmerge destkey sourcekey[sourcekey …] 合并

 

七 pub/sub 类型

1.       publish channel message  往channel message发送消息

2.       subscribe channel [channel …] 订阅消息

3.       pubsub channels pattern 返回所有有效的channel

4.       pubsub numsub [channel …] 返回channel下面的订阅个数

5.       pubsub numpat 返回模糊匹配channel的subscribe个数

6.       psubscribe pattern [pattern…] 模糊订阅subscribe

7.       unsubscribe channel [channel …]取消订阅

8.       punsubscribe pattern [pattern …]取消模糊匹配

 

八 transaction 机制

1.       multi开始transaction

2.       exec结束transaction并提交

3.       discard 结束transaction且不执行

4.       watch key [key …] 监控key,在multi和exec执行过程中,如果key的值发送改变,整个transaction会失败

5.       unwatch 取消监控,在multi和exec中使用,当运行过程中不需要监控key时,可以取消

6.       例子:

7.             端1:

8.       127.0.0.1:6379> watch k1

9.       OK

10.   127.0.0.1:6379> multi

11.   OK

12.   127.0.0.1:6379> set k1 cccc

QUEUED

127.0.0.1:6379>exec

(nil)

 

       端2:

127.0.0.1:6379>set k1 dddd

OK

因为端1在transaction执行过程中,端2改变了k1的值,所以端1的transaction失败了

 

 

九 connection方法

1.       ping 检测是否有效连接

2.       select index 选择databases

3.       quit 退出

4.       echo message 打印信息

5.       auth password 输入密码

 

十 server方法

1.       dbsize 返回当前数据库中的key个数

2.       time 返回当前时间

3.       flushall 清空所有数据库的key

4.       flushdb 清空当前database的key

5.       info 返回redis的状态信息

6.       config get parameter 获取redis.conf里面的参数内容,parameter支持正则表达式

7.       config resetstat 重置info中stats的信息

8.       lastsave 上一次保存的时间

9.       monitor 监控日志,当不知道数据库发生啥时,可以用了当debug调试,但是性能会下降约50%,redis-benchmark压测(见最后)

10.   client list 列出当前的client信息,

·      Oneclient connection per line (separated by LF)

·      Eachline is composed of a succession of property=value fields separated by a spacecharacter.

Hereis the meaning of the fields:

·      addr:address/port of the client

·      fd:file descriptor corresponding to the socket

·      age:total duration of the connection in seconds

·      idle:idle time of the connection in seconds

·      flags:client flags (see below)

·      db:current database ID

·      sub:number of channel subscriptions

·      psub:number of pattern matching subscriptions

·      multi:number of commands in a MULTI/EXEC context

·      qbuf:query buffer length (0 means no query pending)

·      qbuf-free:free space of the query buffer (0 means the buffer is full)

·      obl:output buffer length

·      oll:output list length (replies are queued in this list when the buffer is full)

·      omem:output buffer memory usage

·      events:file descriptor events (see below)

·      cmd:last command played

11.   client kill ip:port 杀死客户端连接

12.   client setname connection-name 设置当前client的名字

13.   client getname 返回当前的client-name

14.   client pause timeout 暂停服务timeout为微秒 ,可能的场景,主从延时,info返回的memory,replication信息做处理吧,暂时没想到其他场景

15.   slaveof ip:port 挂载到slave

16.   slave no one 变成master

 

十一 scripting 加载lua扩展功能

1.       script load script 加载lua脚本,返回sha1

2.       script exists script 判断是否存在

3.       eval script numkeys key [key…]arg [arg…] 执行脚本

4.       evalsha sha1 numkeys key [key…]arg [arg …] 执行sha1缓存的脚本

 

 [root@AY140425180750358b92Z ~]# cat /tmp/1.lua

return'ok'

 

 [root@AY140425180750358b92Z ~]# redis-cliscript load  "$(cat/tmp/1.lua)"

"34f6a80fdc91746367dd8b572351df66b92c67ed"

 

127.0.0.1:6379> script exists 34f6a80fdc91746367dd8b572351df66b92c67ed

1) (integer) 1

 

127.0.0.1:6379> EVALSHA 34f6a80fdc91746367dd8b572351df66b92c67ed0

"ok"

 

127.0.0.1:6379>  eval "return redis.call('get','k1')" 0

"dddd"

 

127.0.0.1:6379>  eval "return redis.call('hget','s1','f1')" 0

"v1"

 

127.0.0.1:6379>eval 'return {KEYS[1],ARGV[1]}' 1 k1 v1

1)"k1"

2)"v1"

 

注:

redis压力测试,相当与ab压力工具:

redis-benchmark -c 10 -n 100000 –q

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值