乐趣区

关于redis: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. 对象缓存存储

二、命令划分

集体感觉 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 取值下标规定

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

退出移动版