字符串类型是 redis 中最为基础的数据存储类型,是一个由字节组成的序列,它可以接受任何格式的数据,如JPEG图像数据或json对象描述信息等,是标准的key-value,一般用来存字符串、整数和浮点数。value最多可容纳的数据长度为512MB。
Key定义的注意点:
- 不要过长,
- 不要过短,
- 统一的命名规范
1. String常用命令
set 赋值:
127.0.0.1:6379> set age 18
OK
get 取值:
127.0.0.1:6379> get age
"18"
getset 获取并设置值
127.0.0.1:6379> getset age 19
"18"
127.0.0.1:6379> get age
"19"
setrange key offset value
getrange key start end
SETRANGE 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。
SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定key原来储存的字符串长度比偏移量小,那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充GETRANGE 返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。负数偏移量表示从字符串最后开始计数,-1 表示最后一个字符,-2 表示倒数第二个,以此类推。
GETRANGE 通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求。不支持回绕操作。
127.0.0.1:6379> set hello "hello world!"
OK
127.0.0.1:6379> setrange hello 6 "redis"
(integer) 12
127.0.0.1:6379> get hello
"hello redis!"
127.0.0.1:6379> setrange hello 13 ^_^
(integer) 16
127.0.0.1:6379> get hello
"hello redis!\x00^_^"
127.0.0.1:6379>
127.0.0.1:6379> set hello "hello world"
OK
127.0.0.1:6379> getrange hello 0 -1
"hello world"
127.0.0.1:6379> getrange hello 0 3
"hell"
127.0.0.1:6379> getrange hello -1 -5
""
127.0.0.1:6379> getrange hello -5 -1
"world"
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作。
MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。
del 删除
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
incr 自增
127.0.0.1:6379> incr n
(integer) 1
127.0.0.1:6379> get n
"1"
127.0.0.1:6379>
127.0.0.1:6379> incr age
(integer) 20
decr 自减
127.0.0.1:6379> decr i
(integer) -1
127.0.0.1:6379> decr age
(integer) 19
incrby 指定增量值
127.0.0.1:6379> get age
"19"
127.0.0.1:6379> incrby age 4
(integer) 23
decrby 指定减量值
127.0.0.1:6379> decrby age 6
(integer) 17
append 追加字符串
假如没定义 直接赋值
127.0.0.1:6379> append str hello
(integer) 5
127.0.0.1:6379> append str Word
(integer) 9
127.0.0.1:6379> get str
"helloWord"
bitop operation destkey key [key ...]
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。
当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0 。
127.0.0.1:6379> setbit bit1 2 1 # bit1 001
(integer) 0
127.0.0.1:6379> setbit bit2 1 1 # bit2 011
(integer) 0
127.0.0.1:6379> setbit bit2 2 1
(integer) 0
127.0.0.1:6379> bitop and result bit1 bit2
(integer) 1
127.0.0.1:6379> getbit result 0
(integer) 0
127.0.0.1:6379> getbit result 1
(integer) 0
127.0.0.1:6379> getbit result 2
(integer) 1
计算给定字符串中,被设置为 1 的比特位的数量。
一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。start 和 end 参数的设置可以使用负数值
不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0 。
127.0.0.1:6379> bitcount bit2
(integer) 2
127.0.0.1:6379> bitcount empty
(integer) 0