目录
一、环境介绍
- 系统:CentOS6.8
- redis版本: 4.0.7
- 终端软件:Xshell
- 说明:下面都将使用redis的help命令对各个数据结构做命令详解,在这之前需要安装好redis,运行server,运行cli连接上server。
二、strings
- help @string,即可查看所有strings相关命令
- append 字符串拼接,追加在末尾,, 例子:
- decr 指定key的值减1,
- decrby 指定key的值减一定数
- get 获取key对应的value
- getrange 获取子字符串, , 可以看出,start 和end参数表示在字符串的偏移量,含头含尾。 正数的offset表示从头开始,0表示第一个,,负数的offset表示从尾开始,-1表示倒数第一,-2倒数第二。
- getset 先获取value再设置value
- incr 指定key加1
- incrby 指定key加指定值
- incrbyfloat 指定key加浮点值
- mget 获取多个key的value
- mset 设置多个key值
- msetnx 设置多个key值,只有在每个key都不存在时成功,否则所有设置都会失败。
- psetex 设置key值和过期时间,过期时间已毫秒为单位。 , pttl查看过期时间,毫秒为单位
- set 设置key值 , 可以简单地设置value,, EX | PX分别可以设置以 秒 | 毫秒 为单位的过期时间,, NX | XX 只能选一个或都不用, NX表示key不存在时操作成功,XX表示key存在时操作成功
- setrange 替换字符串部分内容
- strlen 查看字符串长度
- setex 设置key值,只有key存在生效
- setnx 设置key值,只有key不存在生效
三、strings的bitmap
- redis中strings类型以二进制存储,最大长 度是 512MB,适合于设置 2^32个不同的位。bitmap可以操作strings类型的二进制位。
- 比如 字符'A'的ASCII码是65,即64 + 1,转换位二进制为 0100 0001, ,即通过setbit操作生成了 A字符,, B为66, 为64 + 2,二进制 0100 0010,
- setbit ,设置某个key某个bit值, offset为偏移量,以0开始, value只能是二进制的0或1。
- getbit , , 获取某个bit值
- bitcount , 统计key 某个区间bit值为1的数量,, start 和 end 可以不写,统计整个
- bitop , 对一个或多个key做bit层面的与、或、非、异或操作,, operation可选值为AND、OR、NOT、XOR分别表示 与、或、非、异或操作,,destkey表示操作后存储的key值,,key为待操作值,除了OR,key都可以为一个或多个。
四、bitop
- , 设置s1为ac,二进制 0110 0001 0110 0011,,s2为bd 二进制0110 0010 0110 0100
- 两行二进制运算结果如下 , and操作结果应为ASCII码 96 96,,or操作结果为 99 103 ,, xor结果为 3 7
- ,查ASCII码表 ,96正是 “`”。
- ,查ASCII码表,99为小c,103为小g
- bitmap用途:
- 网站用户登陆记录: ,,将日期作为key,userid作为offset,有登陆过就设置为1。 查询用户某天是否登陆: ,,查询某天活跃用户数 ,, 查询某几天总的活跃用户数(登陆过的用户) ,这里应该用or,表示只要登陆过。
- 网站在线数统计: ,,userid做offset,,判断在线状态 getbit即可,,计算总在线人数 bitcount。