string 类型又分为 字符串, 数值 , bitmap
1. 字符串
首先明白存储的是字节,并非是字符串
操作字符串的命令
SET key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEPTTL] [NX|XX] [GET]
 参数说明: ex: 生存时间单位秒 px: 生存时间单位毫秒 exat: 到期时间(用时间戳表示到期时间,单位时秒) pxat: 到期时间(用时间戳表示到期时间,单位时毫秒) nx: redis中该key不存在时才能设置, 可以用作分布式锁 xx: redis中该key存在时才能设置
SETNX key value
只有该key不存在时才能设置值
GETSET key value
设置新的值返回旧的值 
GETDEL key
返回值并且删除key 
GETEX key [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|PERSIST]
返回value并且设置生存时间或者到期时间
SETEX key seconds value
设置值并且给key 设置生存时间单位时秒
PSETEX key milliseconds value
设置值并且给key 设置生存时间单位时秒
GETRANGE key start end
start: 开始索引 end : 结束索引 
字符串aaaa的索引如下: 
SETRANGE key offset value
offset: 开始索引 value :替换的值 替换字符串的部分,超出字符串长度也可以添加 
MSET key value [key value …]
批量添加 (并非原子操作)
MGET key [key …]
批量查询 
MSETNX key value [key value …]
批量设置值只有所有的key不存在时才能成功, 操作保持原子性 
APPEND key value
追加字符串 
STRLEN key
返回字符串所占字节的长度
中文操作:  英文操作: 
操作数值的命令
INCR key
该key的value是interge时 给value 加 1 
INCRBY key increment
该key的value是interge时 给value 加 increment 
INCRBYFLOAT key increment
给value加increment 
DECR key
该key的value是interge时 给value 减 1
DECRBY key decrement
该key的value是interge时 给value 减 decrement  
DECRBY key decrement
该key的value是interge时 给value 减 decrement 
操作bitmap的命令
位存储的原理图: 
SETBIT key offset value
设置值:key: 键 offset: 索引位置 value: 该二进制位上的值 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 位的设置或清除取决于 value 参数,可以是 0 也可以是 1 。 当 key 不存在时,自动生成一个新的字符串值。 字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。 offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。 
BITCOUNT key [start end]
计算给定字符串中,被设置为 1 的比特位的数量。start和end表示:字节的索引 一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。 start 和 end 参数的设置和 GETRANGE 命令类似,都可以使用负数值:比如 -1 表示最后一个位,而 -2 表示倒数第二个位,以此类推。
不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0 
BITPOS key bit [start] [end]
查找索引为start字节和索引为end字节之间,bit 第一次出现的偏移量,下面的例子: bitpos k1 1 0 1: 表示在0号字节和1号字节之间,第一次出现1的位图的偏移量,1第一次出现在0号字节上,偏移量是1 bitpos k1 1 1 1: 表示在1号字节和1好字节之间(其实就是1号字节),第一次出现的1的位图偏移量,很显然1在1号字节第一次出现的偏移量是9,因为1号字节的偏移量是从8开始 
BITOP operation destkey key [key …]
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。 
应用场景:
1.统计一段时间内用户登录的次数

2. 统计一段时间内有多少用户登陆过

3.统计浏览量,收藏数, 点赞数,可以用incr 命令
|