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>

适用场景:
  1. 计数器
  2. 统计多单位的数量
  3. 粉丝数
  4. 对象缓存存储
二、命令划分
【redis | 四、redis之String】个人觉得string类型,命令比较多些,便于个人理解和学习,进行了简单分类!
分为以下几类:
  1. 赋值命令
  2. 取值命令
  3. 特有命令
  4. 额外命令
  5. 对象格式操作
以上为个人理解,进行简单划分。具体对命令的理解,期待你的理解方法!
1. 赋值命令
  1. set:设置值
  2. setnx:如果值不存在则进行赋值
  3. mset:批量设值
  4. msetnx:批量设值,且key不存在
  5. getset:返回旧值,设值新值
2. 取值命令
  1. get:获取key的值
  2. mget:批量获取key的值
3. 特有命令
  1. exists:判断key是否存在
  2. append:根据key进行追加
  3. strlen:获取key的长度
  4. setrange:根据起终下标,进行设值(个人理解为字符串替换replace)
  5. getrange:根据起终下标,进行取值(个人理解为字符串截取substring)
4. 额外命令
  1. setex:设值key,并设置过期时间(单位:s/秒))
  2. psetex:设值key,并设置过期时间(单位:ms/毫秒))
  3. incr:int类型,进行key的自增(i++)
  4. decr:int类型,进行key的自减(i--)
  5. incrby:int类型,根据步长进行key的增加(i+n)
  6. decrby:int类型,根据步长进行key的增减(i-n)
  7. incrbyfloat:float类型,根据float值,进行增减(正负)
5. 对象格式操作 根据id和属性进行对象的存取值
三、分类命令实践
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取值下标规则
redis | 四、redis之String
文章图片

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)的末尾。
更多命令请参考:https://redis.io/commands

    推荐阅读