字符串操作
Redis key 值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值
Key取值原则
键值不需要太长,消耗内存,且在数据中查找这类键值的计算成本较高键值不宜过短,可读性较差
字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据
例如: 一张JPEG格式的图片或者一个序列化的Ruby对象
一个字符串类型的值最多能存储512M字节的内容
使用set命令设置一个字符串类型的值
set key value
SET key value [EX seconds] [PX milliseconds] [NX|XX]
set k1 v1 设置一个k1键对应一个v1值,如果数据库中有k1,则覆盖
set k1 v11 nx 设置一个k1键对应一个v11值,如果数据库中有k1则次命令无效,如果数据库中无k1则创建k1->v11
set k1 v22 xx 设置一个k1键对应一个v22值,只能覆盖而不能新建
set k1 v33 ex 10 设置一个k1键对应一个v33值,有效期是10s ,可通过ttl k1查看k1对应的有效时间,-2表示失效
set k1 v33 px 1000 设置一个k1键对应一个v33值,有效期是1000ms,可通过ttl k1查看k1对应的有效时间
使用get命令查看字符串类型的值
get key
使用MGET key [key ...] 获取多个键对应的值
mget k1 k2
使用mset 设置多个字符串类型的值
mset k1 v1 k2 v2
使用msetnx设置多个值 只有在值没有时才能新建成功(原子操作)
msetnx k1 v1 k2 v2
getset 返回旧值设置新值(相当于修改只是返回旧值)
type 查看键的类型
>>set k1 v1
>>hset myhash k1 v1
>>type k1 => string
>>type myhash => hash
strlen 返回key对应的值的字节的长度
>>注意是字节的长度不是字符的长度,英文下一个字节对应一个字符,所以容易造成误解是字符的长度
>>set kx 查看键的编码
>>get kx ==>\xe6\x9f\xa5\xe7\x9c\x8b\xe9\x94\xae\xe7\x9a\x84\xe7\xbc\x96\xe7\xa0\x81
>>strlen kx ==>18
>>在UTF-8下正好一个汉字用3个字节,所有6个汉字正好18个字节 strlen kx 返回18
object encoding 查看键的编码
EXPIRE key seconds 设置键多少秒过期
EXPIRE k7 7
PEXPIRE key milliseconds 设置键多少毫秒过期
persist k7 阻止k7失效
RENAME key newkey 重命名
DEL key [key ...] 删除键
APPEND key value 给key对应的值在最后追加一个值,如果这个键不存在就相当于set
eg:>set k1 vv1
>append k1 a
>append k1 b
get k1 => vv1ab
GETRANGE key start end 获取key这个键对应值的[start,end]位的字节 start和end都包括即[start,end]
GETRANGE a 0 1
GETRANGE a -3 -1 获取最后3位
eg:set k1 你好(\xe4\xbd\xa0\xe5\xa5\xbd)
getrange k1 0 2 =>\xe4\xbd\xa0 返回 “你好”这个值对应的字节数组的0-2位 (\xe4\xbd\xa0)
SETRANGE key offset value 设置字节数组 从offset的位置开始覆盖value的长度个字节
eg:set k1 你好(\xe4\xbd\xa0\xe5\xa5\xbd)
setrange k1 0 123 =>(123\xe5\xa5\xbd) 把从0位开始的字节替换为123
INCR key 给值增加1 可以准换为整型的字符串类型
DECR key 给值减去1 可以准换为整型的字符串类型
INCRBY key increment 增加步长(increment)
DECRBY key decrement