Redis 字符串(String)

Redis字符串

Redis 字符串类型的相关命令用于管理redis字符串值。

语法
redis 127.0.0.1:6379> COMMAND KEY_NAME

常用字符串命令

SET key value

设置指定的key值。

127.0.0.1:6379> set k1 "hello"
OK
GET key

获取指定的key值

127.0.0.1:6379> GET k1
"hello"
GETRANGE key start end

返回key中字符串值得字字符

127.0.0.1:6379> GETRANGE k1 1 4
"ello"
GETSET key value

将给定的key值设为value,并返回key的旧值

127.0.0.1:6379> GETSET k1 "hello2"
"hello"
MGET key1 [key1…]

获取所有(一个或多个)给定key的值

127.0.0.1:6379> MGET k1 k2
1) "hello2"
2) "hello"
SETEX key seconds value

将值value关联到key,并将key的过期时间设置为seconds(以秒为单位)。

127.0.0.1:6379> SETEX k1 30 v1
OK
127.0.0.1:6379> GET k1
"v1"
127.0.0.1:6379> TTL k1
(integer) 16
SETNX key value

跟SET类似,但只有key不存在时设置key的值。

127.0.0.1:6379> SETNX k1 "newv1"
(integer) 1
127.0.0.1:6379> GET k1
"newv1"
127.0.0.1:6379> SETNX k1 "newv2"
(integer) 0
127.0.0.1:6379> GET k1
"newv1"
SETRANGE key offset value

用value来覆盖key对应value的下标第offset位置的值,如果offset大于key对应value的长度对应下标,则value放于最后,中间用0补齐。

127.0.0.1:6379> SET k1 vvvv
OK
127.0.0.1:6379> SETRANGE k1 1 t
(integer) 4
127.0.0.1:6379> GET k1
"vtvv"
127.0.0.1:6379> 

offset大于value最大下标情况

127.0.0.1:6379> SETRANGE k1 6 t
(integer) 7
127.0.0.1:6379> GET k1
"vtvv\x00\x00t"
127.0.0.1:6379> 
STRLEN key

返回key所储存的字符串值得长度

127.0.0.1:6379> STRLEN k1
(integer) 5
MSET key value [key value …]

同时设置一个或多个key-value对。

127.0.0.1:6379> MSET k1 v1 k2 v2
OK
127.0.0.1:6379> GET k1 k2
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> MGET k1 k2
1) "v1"
2) "v2"

MSETNX key value [key value …]

同时设置一个或多个key-value对,并且仅当所有给定key都不存在才生效。如下例子:k1存在,而k4、k5不存在。

127.0.0.1:6379> MSETNX k1 newv1 k4 v4
(integer) 0
127.0.0.1:6379> 
127.0.0.1:6379> MSETNX k4 v4 5 v5
(integer) 1
PSETEX key milliseconds value

这个命令和SETEX命令类似,但他以毫秒为单位设置key的生存时间,而不是像 SETEX 命令那样,以秒为单位。

127.0.0.1:6379> PSETEX k1 100000 v1
OK
127.0.0.1:6379> GET k1
"v1"
127.0.0.1:6379> PTTL k1
(integer) 91683

INCR key

将key中储存的数字值增一,注意当key对应的value是数字是才能正确执行。

127.0.0.1:6379> SET k1 5
OK
127.0.0.1:6379> INCR k1
(integer) 6
127.0.0.1:6379> GET k1
"6"
127.0.0.1:6379> SET k1 "a2b"
OK
127.0.0.1:6379> INCR k1
(error) ERR value is not an integer or out of range
INCRBY key increment

将key所储存的值加上给定的增量值(increment)。

127.0.0.1:6379> SET k1 5
OK
127.0.0.1:6379> INCRBY k1 5
(integer) 10
127.0.0.1:6379> GET k1
"10"
INCRBYFLOAT key increment

将 key 所储存的值加上给定的浮点增量值(increment) 。

127.0.0.1:6379> SET k1 5
OK
127.0.0.1:6379> INCRBYFLOAT k1 3.22
"8.22"
127.0.0.1:6379> GET k1
"8.22"
DECR key

将 key 中储存的数字值减一。

DECRBY key decrement

key 所储存的值减去给定的减量值(decrement) 。

APPEND key value

如果key已经存在并且是一个字符串,APPEND命令将指定的value追加key原来值(value)的末尾。

127.0.0.1:6379> SET k1 "abc"
OK
127.0.0.1:6379> APPEND k1 "def"
(integer) 6
127.0.0.1:6379> GET k1
"abcdef"

BITCOUNT/BITFIELD/BITOP/BITPOS/SETBIT/GETBIT key offset

在了解这几个命令怎么使用之前,我们得先了解下Redis字符串的存储方式,Redis中的字符串都是以二进制的方式进行存储,比如说我执行如下命令:

127.0.0.1:6379> SET k1 a
OK

a对应的ASCII码是97,转换为二进制数据是01100001,我们BIT相关命令都是对二进制数据进行操作。

GETBIT key offset

获取key对应value在offset处的bit值,以前面提到的k1为例,a对应的二进制数据为01100001,所以当offset为0时,对应的bit值位0;offset为1时,对应的bit值位1;以此类推…如下:

127.0.0.1:6379> GETBIT k1 0
(integer) 0
127.0.0.1:6379> GETBIT k1 1
(integer) 1
127.0.0.1:6379> GETBIT k1 2
(integer) 1
127.0.0.1:6379> GETBIT k1 3
(integer) 0
127.0.0.1:6379> GETBIT k1 4
(integer) 0
127.0.0.1:6379> GETBIT k1 5
(integer) 0
127.0.0.1:6379> GETBIT k1 6
(integer) 0
127.0.0.1:6379> GETBIT k1 7
(integer) 1
SETBIT key offset value

SETBIT 可以用来修改二进制数据,比如 a 对应的 ASCII 码为 97,c 对应的 ASCII 码为 99,97 转为二进制是 01100001 ,99 转为二进制是 01100011 ,两个的差异在于第六位一个是 0 一个是 1 ,通过 SETBIT 命令,我们可以将 k1 的第六位的 0 改为 1 (第六位是从 0 开始算),如下:

127.0.0.1:6379> SETBIT k1 6 1
(integer) 0
127.0.0.1:6379> GET k1
"c"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值