redis | 四、redis之String
edis系列文章:一、基本语法
https://liudongdong.top/categ...
本篇来源:
https://liudongdong.top/archi...
公众号:雨中散步撒哈拉
备注:欢迎关注公众号,一起学习,共同进步!
Redis 字符串(String)
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:
语法
redis 127.0.0.1:6379> COMMAND KEY_NAME
实例
127.0.0.1:6379> set learn_redis liudd
OK
127.0.0.1:6379> get learn_redis
"liudd"
127.0.0.1:6379>
适用场景:
- 计数器
- 统计多单位的数量
- 粉丝数
- 对象缓存存储
【redis | 四、redis之String】个人觉得string类型,命令比较多些,便于个人理解和学习,进行了简单分类!
分为以下几类:
- 赋值命令
- 取值命令
- 特有命令
- 额外命令
- 对象格式操作
1. 赋值命令
- set:设置值
- setnx:如果值不存在则进行赋值
- mset:批量设值
- msetnx:批量设值,且key不存在
- getset:返回旧值,设值新值
- get:获取key的值
- mget:批量获取key的值
- exists:判断key是否存在
- append:根据key进行追加
- strlen:获取key的长度
- setrange:根据起终下标,进行设值(个人理解为字符串替换replace)
- getrange:根据起终下标,进行取值(个人理解为字符串截取substring)
- setex:设值key,并设置过期时间(单位:s/秒))
- psetex:设值key,并设置过期时间(单位:ms/毫秒))
- incr:int类型,进行key的自增(i++)
- decr:int类型,进行key的自减(i--)
- incrby:int类型,根据步长进行key的增加(i+n)
- decrby:int类型,根据步长进行key的增减(i-n)
- incrbyfloat:float类型,根据float值,进行增减(正负)
三、分类命令实践
1. 赋值命令
# 查看当前库所有key
127.0.0.1:6379> keys *
(empty list or set)
# 设值k1
127.0.0.1:6379> set k1 v1
OK
# 测试setnx对k1,如果k1存在是否存储
127.0.0.1:6379> setnx k1 kk
(integer) 0
# 上步返回0,结果为存储失败,进行查看k1值
127.0.0.1:6379> get k1
"v1"
# k2不存在,进行存储
127.0.0.1:6379> setnx k2 v2
(integer) 1
# 上步返回1,存储成功,进行查看
127.0.0.1:6379> get k2
"v2"
# 批量设值
127.0.0.1:6379> mset k3 v3 k4 v4
OK
# 批量取值
127.0.0.1:6379> mget k3 k4
1) "v3"
2) "v4"
# 返回旧值,设值新值
127.0.0.1:6379> getset k4 v5
"v4"
# 查看结果
127.0.0.1:6379> get k4
"v5"
127.0.0.1:6379>
2. 取值命令 前一步,已经根据设值进行了设值和取值,本步单独进行取值
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k2 k3 k4
1) "v2"
2) "v3"
3) "v5"
127.0.0.1:6379>
3. 特有命令
# 查看当前库,
127.0.0.1:6379> keys *
1) "k3"
2) "k1"
3) "k4"
4) "k2"
# 判断是否存储k4
127.0.0.1:6379> exists k4
(integer) 1
# 判断是否存在k5
127.0.0.1:6379> exists k5
(integer) 0
# k4进行追加值
127.0.0.1:6379> append k4 aaa
(integer) 5
127.0.0.1:6379> get k4
"v5aaa"
# 获取k4值得长度
127.0.0.1:6379> strlen k4
(integer) 5
# 根据起始下标进行替换k4,起始下标为1
127.0.0.1:6379> setrange k4 1 kk
(integer) 5
127.0.0.1:6379> get k4
"vkkaa"
# 截取获取值,截取下标范围[2,4]
127.0.0.1:6379> getrange k4 2 4
"kaa"
# 如果出现负值,则下标为从右向左,开始为-1
127.0.0.1:6379> getrange k4 0 -1
"vkkaa"
127.0.0.1:6379>
题外话:
getrange取值下标规则
文章图片
image.png
4. 额外命令
# 设值过期时间为3秒
127.0.0.1:6379> setex k 3 kk
OK
127.0.0.1:6379> get k
"kk"
127.0.0.1:6379> get k
(nil)
# 设值过期时间为3000毫秒(3秒)
127.0.0.1:6379> psetex kk 3000 kk
OK
127.0.0.1:6379> get kk
"kk"
127.0.0.1:6379> get kk
(nil)
# 对i自增
127.0.0.1:6379> incr i
(integer) 1
127.0.0.1:6379> incr i
(integer) 2
127.0.0.1:6379> get i
"2"
# 对i自减
127.0.0.1:6379> decr i
(integer) 1
127.0.0.1:6379> decr i
(integer) 0
127.0.0.1:6379> get i
"0"
# 根据步长增加
127.0.0.1:6379> incrby i 3
(integer) 3
# 根据步长减少
127.0.0.1:6379> decrby i 4
(integer) -1
127.0.0.1:6379> get i
"-1"
# 对i进行float浮点数操作
127.0.0.1:6379> incrbyfloat i 2.1
"1.1"
127.0.0.1:6379> get i
"1.1"
127.0.0.1:6379>
5. 对象格式操作 对象命令格式
mset key:{id}:{属性}
# id为1的user,进行设值
127.0.0.1:6379> mset user:1:name liudd user:1:age 2
OK
# 获取user,id为1的值
127.0.0.1:6379> mget user:1:name user:1:age
1) "liudd"
2) "2"
# 设值id为2的user对象
127.0.0.1:6379> mset user:2:name liudd2 user:2:age 3
OK
127.0.0.1:6379> mget user:2:name user:2:age
1) "liudd2"
2) "3"
127.0.0.1:6379> keys *
1) "k1"
2) "user:2:name"
3) "k2"
4) "user:1:age"
5) "user:2:age"
6) "k3"
7) "user:1:name"
8) "k4"
9) "i"
127.0.0.1:6379>
附录:命令列表
下表列出了常用的 redis 字符串命令:
序号 | 命令及描述 |
---|---|
1 | SET key value 设置指定 key 的值 |
2 | GET key 获取指定 key 的值。 |
3 | GETRANGE key start end 返回 key 中字符串值的子字符 |
4 | GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 |
5 | GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 |
6 | [MGET key1 key2..] 获取所有(一个或多个)给定 key 的值。 |
7 | SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 |
8 | SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 |
9 | SETNX key value 只有在 key 不存在时设置 key 的值。 |
10 | SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 |
11 | STRLEN key 返回 key 所储存的字符串值的长度。 |
12 | [MSET key value key value …] 同时设置一个或多个 key-value 对。 |
13 | [MSETNX key value key value …] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 |
14 | PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。 |
15 | INCR key 将 key 中储存的数字值增一。 |
16 | INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。 |
17 | INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。 |
18 | DECR key 将 key 中储存的数字值减一。 |
19 | DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。 |
20 | APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。 |
推荐阅读
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- Shell-Bash变量与运算符
- 跌跌撞撞奔向你|跌跌撞撞奔向你 第四章(你补英语,我补物理)
- 奔向你的城市
- 清明,是追思、是传承、是感恩。
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- 七老修复好敏感、角质层薄、红血丝
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 四首关于旅行记忆的外文歌曲