(三)redis常用数据结构之strings

目录

一、环境介绍

二、strings

三、strings的bitmap

四、bitop


一、环境介绍

  1. 系统:CentOS6.8
  2. redis版本: 4.0.7
  3. 终端软件:Xshell
  4. 说明:下面都将使用redis的help命令对各个数据结构做命令详解,在这之前需要安装好redis,运行server,运行cli连接上server。

二、strings

  1. help @string,即可查看所有strings相关命令
  2. append   字符串拼接,追加在末尾,, 例子:
  3. decr  指定key的值减1,    
  4. decrby  指定key的值减一定数   
  5. get  获取key对应的value 
  6. getrange  获取子字符串, (三)redis常用数据结构之strings_第1张图片, 可以看出,start 和end参数表示在字符串的偏移量,含头含尾。 正数的offset表示从头开始,0表示第一个,,负数的offset表示从尾开始,-1表示倒数第一,-2倒数第二。
  7. getset  先获取value再设置value   
  8. incr  指定key加1  
  9. incrby 指定key加指定值  
  10. incrbyfloat  指定key加浮点值   
  11. mget  获取多个key的value
  12. mset  设置多个key值   
  13. msetnx  设置多个key值,只有在每个key都不存在时成功,否则所有设置都会失败。
  14. psetex   设置key值和过期时间,过期时间已毫秒为单位。   , pttl查看过期时间,毫秒为单位
  15. set  设置key值  , 可以简单地设置value,, EX | PX分别可以设置以 秒 | 毫秒 为单位的过期时间,, NX | XX 只能选一个或都不用, NX表示key不存在时操作成功,XX表示key存在时操作成功
  16. setrange  替换字符串部分内容   
  17. strlen 查看字符串长度  
  18. setex  设置key值,只有key存在生效
  19. setnx  设置key值,只有key不存在生效

三、strings的bitmap

  1. redis中strings类型以二进制存储,最大长 度是 512MB,适合于设置 2^32个不同的位。bitmap可以操作strings类型的二进制位。
  2. 比如 字符'A'的ASCII码是65,即64 + 1,转换位二进制为 0100 0001,   ,即通过setbit操作生成了 A字符,, B为66, 为64 + 2,二进制 0100 0010, 
  3. setbit   ,设置某个key某个bit值, offset为偏移量,以0开始, value只能是二进制的0或1。 
  4. getbit  , , 获取某个bit值
  5. bitcount  , 统计key 某个区间bit值为1的数量,, start 和 end 可以不写,统计整个
  6. bitop  (三)redis常用数据结构之strings_第2张图片, 对一个或多个key做bit层面的与、或、非、异或操作,, operation可选值为AND、OR、NOT、XOR分别表示 与、或、非、异或操作,,destkey表示操作后存储的key值,,key为待操作值,除了OR,key都可以为一个或多个。      

四、bitop

 

  1.  , 设置s1为ac,二进制 0110 0001 0110 0011,,s2为bd  二进制0110 0010 0110 0100 
  2. 两行二进制运算结果如下  (三)redis常用数据结构之strings_第3张图片, and操作结果应为ASCII码 96 96,,or操作结果为 99 103 ,, xor结果为 3 7
  3.  ,查ASCII码表  ,96正是 “`”。
  4.  ,查ASCII码表,99为小c,103为小g
  5. bitmap用途:
  • 网站用户登陆记录: (三)redis常用数据结构之strings_第4张图片,,将日期作为key,userid作为offset,有登陆过就设置为1。 查询用户某天是否登陆: ,,查询某天活跃用户数  ,, 查询某几天总的活跃用户数(登陆过的用户) ,这里应该用or,表示只要登陆过。
  • 网站在线数统计: (三)redis常用数据结构之strings_第5张图片,,userid做offset,,判断在线状态 getbit即可,,计算总在线人数 bitcount。

你可能感兴趣的:(redis)