- 设置字符串值
- SET key value [EX seconds] [PX milliseconds] [NX|XX]
- EX 设置过期时间,秒,等同于SETEX key seconds value
- PX 设置过期时间,毫秒,等同于PSETEX key milliseconds value
- NX 键不存在,才能设置,等同于SETNX key value
- XX 键存在时,才能设置
- 设置多个键的字符串值
- MSET key value [key value ...]
- 键不存在时,设置字符串值
- MSETNX key value [key value ...]
- 注意:这是原子操作
- set s1 abc
- set s2 12
- set se abc ex 15
- mset s3 3 s4 4 s5 5
- msetnx s5 A5 s6 6 :NX 键不存在,才能设置、
- 过期
- Redis中可以给Key设置一个生存时间(秒或毫秒),当达到这个时长后,这些键值将会被自动删除
- 设置多少秒或者毫秒后过期
- EXPIRE key seconds
- PEXPIRE key milliseconds
- 设置在指定Unix时间戳过期
- EXPIREAT key timestamp
- PEXPIREAT key milliseconds-timestamp
- 删除过期
PERSIST key
- 生存时间
- Time To Live,Key的剩余生存时间
- 查看剩余生存时间
- TTL key
- PTTL key
- key存在但没有设置TTL,返回-1
- key存在,但还在生存期内,返回剩余的秒或者毫秒
key曾经存在,但已经消亡,返回-2(2.8版本之前返回-1)
- set se abc ex 15
- ttl s6
- expire s6 60
- pttl s6
- persist s6
- pttl s6
- EXPIREAT cache 1355292000
- PEXPIREAT mykey 1555555555005
- 查找键
- KEYS pattern
- pattern取值
- * 任意长度字符
- ? 任意一个字符
- [] 字符集合,表示可以是集合中的任意一个
- keys s*
- keys s?
- keys s[13]
- keys *
keys ??
- 键类型
- TYPE key
- 键是否存在
- EXISTS key
- 键重命名
- RENAME key newkey
- RENAMENX key newkey
- 键删除
- DEL key [key ...]
- 获取值
- GET key
- 获取多个给定的键的值
- MGET key [key ...]
- 返回旧值并设置新值
- GETSET key value
- 如果键不存在,就创建并赋值
- 字符串长度
STRLEN key
- 追加字符串
- APPEND key value
- 如果键存在就追加;如果不存在就等同于SET key value
- 获取子字符串
- GETRANGE key start end
- 索引值从0开始,负数表示从字符串右边向左数起,-1表示最有一个字符
- 覆盖字符串
- SETRANGE key offset value
- APPEND s6 123
- getrange s1 1 2
- getrange s1 0 -1
- getrange s1 -2 -1
- getrange s1 0 10000
- SETRANGE s6 3 e
- SETRANGE s6 3 efghijk
- SETRANGE newkey 5 hello
SETRANGE s6 3 efghijk
- 步长1的增减
- INCR key
- DECR key
- 字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
- 步长增减
- INCRBY key decrement
- DECR key decrement
- 字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
- 位图不是真正的数据类型,它是定义在字符串类型中
- 一个字符串类型的值最多能存储512M字节的内容
- 位上限:2^(9+10+10+3)=2^32b
- 设置某一位上的值
- SETBIT key offset value
- offset偏移量,从0开始
- value不写,默认是0
- 获取某一位上的值
- GETBIT key offset
- 返回指定值0或者1在指定区间上第一次出现的位置
- BITPOS key bit [start] [end]
- set str1 ab
- setbit str1 6 1
- setbit str1 7 0
- get str1
- 这个结果是什么?
- 位操作
- 对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 dteskey 上
- operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种
- BITOP AND destkey key [key ...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey
- BITOP OR destkey key [key ...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey
- BITOP XOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey
- BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey
- 除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入
- 当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0
- 空的 key 也被看作是包含 0 的字符串序列
- 思考:a位或b是什么?
- 统计指定位区间上值为1的个数
- BITCOUNT key [start] [end]
- 从左向右从0开始,从右向左从-1开始,注意官方start、end是位,测试后是字节
- BITCOUNT testkey 0 0表示从索引为0个字节到索引为0个字节,就是第一个字节的统计
- BITCOUNT testkey 0 -1等同于BITCOUNT testkey
- 最常用的就是 BITCOUNT testkey
- Redis的二进制位
- set s1 ab
- bitcount s1
- bitcount s1 0 0
- bitcount s1 1 1
- set ch 中
- bitcount ch
- bitcount ch 2 2
- 登录不同的库
- redis-cli --help
- redis-cli -n 2
- 清除当前库数据
- FLUSHDB
- 清除所有库中的数据
FLUSHALL
- 网站用户的上线次数统计(活跃用户)
用户ID为key,天作为offset,上线置为1
ID为500的用户,今年的第1天上线、第30天上线
SETBIT u500 1 1
SETBIT u500 30 1
BITCOUNT u500
KYES u*
- 按天统计网站活跃用户
天作为key,用户ID为offset,上线置为1
求一段时间内活跃用户数
SETBIT 20160602 15 1
SETBIT 20160601 123 1
SETBIT 20160606 123 1
求6月1日到6月10日的活跃用户
BITOP OR 20160601-10 20160601 20160602 20160603 20160610
BITCOUNT 20160601-10
结果为2