当前位置: 首页 > 工具软件 > Redis TUI > 使用案例 >

Redis02数据结构及命令操作(一):理论和string类型及操作

云鸿达
2023-12-01

1. redis的数据结构:

redis储存的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构

value的数据结构:

     1)字符串类型  string

     2)哈希类型      hash:map格式

     3)列表类型      list:linkedlist格式。支持重复元素

     4)集合类型      set:不允许重复元素

     5)有序集合类型   sorted set:不允许重复元素,且元素有顺序

2. 字符串类型:string

string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

2.1 Redis字符串命令

序号命令及描述
1SET键值 设置指定键的值
2GET key 获取指定键的值
3GETRANGE键开始结束 返回键中字符串值的子字符
4GETSET键值 将给定键的值设为值,并返回键的旧值(旧值)
5GETBIT键偏移 对键所有存储的字符串值,获取指定偏移量上的位(位)
6MGET key1 [key2 ..] 获取所有(一个或多个)给定键的值
7SETBIT键偏移值 对键所有存储的字符串值,设置或清除指定偏移量上的位(位)
8SETEX键秒值 将值值关联到键,并将键的过期时间设为秒(以秒为单位)
9SETNX键值 只有在键不存在时设置键的值
10SETRANGE键偏移值 用值参数覆写给定键所储存的字符串值,从偏移量偏移开始
11STRLEN键 返回键所储存的字符串值的长度
12MSET键值[键值...] 同时设置一个或多个键值对
13MSETNX键值[键值...] 同时设置一个或多个键值对,当且仅当所有给定键都不存在
14PSETEX key milliseconds值 这个命令和SETEX命令相似,但它以毫秒为单位设置key的生存时间,而不是像SETEX命令那样,以秒为单位
15INCR key 将密钥中储存的数字值增一
16INCRBY键增量 将键所存储的值加上给定的增量值(增量)
17INCRBYFLOAT键增量 将键所存储的值加上给定的浮点增量值(增量)
18DECR key 将密钥中储存的数字值减一
19DECRBY key decrement key所储存的值减去给定的减量值(减量)
20APPEND键值 如果键已经存在并且是一个字符串,APPEND命令将值追加到键原来的值的末尾

2.2 string类型及操作

2.2.1 set

设置key 对应的值为 string类型的value。

127.0.0.1:6379> set my li
OK
127.0.0.1:6379> get my
"li"

2.2.2 setnx  只有在键不存在时设置键的值

 设置key 对应的值为 string类型的value。 如果 key 已经存在,返回 0, nx是 not exist的意思。

127.0.0.1:6379> get my
"li"
127.0.0.1:6379> setnx my li_new
(integer) 0
127.0.0.1:6379> get my
"li"

2.2.3 setex  将值值关联到键,并将键的过期时间设为秒(以秒为单位)

设置key 对应的值为 string类型的value,并指定此键值对应的有效期。 例如我们添加一个 phoneColor= red的键值对,并指定它的有效期是 10秒

127.0.0.1:6379> setex color 10 yellow
OK
127.0.0.1:6379> get color
"yellow"
127.0.0.1:6379> get color
(nil)

可见由于最后一次的调用是 10秒以后了,所以取不到 haicolor 这个键对应的值。

2.2.4 setrange 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

设置指定key 的value 值的子字符串。例如将 lizq 替换成 lizq123

127.0.0.1:6379> set tui lizq
OK
127.0.0.1:6379> setrange tui 0 lizq123
(integer) 7
127.0.0.1:6379> get tui
"lizq123"

其中的0是指从下标为0(不包含0)的字符开始替换 

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

  一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。

127.0.0.1:6379> mset name1 one name2 two name3 three
OK
127.0.0.1:6379> get name1
"one"
127.0.0.1:6379> get name2
"two"
127.0.0.1:6379> get name3
"three"

2.2.6 msetnx 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在

 一次设置多个 key 的值。如果存在就不设置,不存在就设置。

127.0.0.1:6379> msetnx name1 mazi name4 zhouyunfa
(integer) 0
127.0.0.1:6379> get name1
"one"
127.0.0.1:6379> get name4
(nil)

可以看出,如果返回0,表示有存在到值,那么整体设置不成功,所有操作都会被会滚,不会执行。

2.2.7 getset  将给定 key 的值设为 value ,并返回 key 的旧值(old value)

设置key 的值,并返回 key 的旧值

127.0.0.1:6379> get name1
"one"
127.0.0.1:6379> getset name1 lizq123
"one"
127.0.0.1:6379> get name1
"lizq123"

2.2.8 getrange 返回 key 中字符串值的子字符

字符串截取

127.0.0.1:6379> set name1 huawei
OK
127.0.0.1:6379> get name1
"huawei"
127.0.0.1:6379> getrange name1 0 3
"huaw"
127.0.0.1:6379> getrange name1 4 100
"ei"

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

   一次获取多个key 的值,如果对应key 不存在,则对应返回 nil。 

127.0.0.1:6379> mget name1 name2 name3 name4
1) "huawei"
2) (nil)
3) "vivo"
4) "mi"

2.2.10 incr 将 key 中储存的数字值增一。

127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> incr age
(integer) 21
127.0.0.1:6379> get age
"21"

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

127.0.0.1:6379> get age
"21"
127.0.0.1:6379> incrby age 5
(integer) 26
127.0.0.1:6379> get age
"26"

2.2.12  decr 将 key 中储存的数字值减一

127.0.0.1:6379> get age
"26"
127.0.0.1:6379> decr age
(integer) 25
127.0.0.1:6379> get age
"25"

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

127.0.0.1:6379> get age
"25"
127.0.0.1:6379> decrby age 5
(integer) 20
127.0.0.1:6379> get age
"20"

2.2.14  append  如果key已经存在并且是一个字符串,APPEND 命令将value追加到 key 原来的值的末尾

127.0.0.1:6379> get name1
"huawei"
127.0.0.1:6379> append name1 @qq.com
(integer) 13
127.0.0.1:6379> get name1
"huawei@qq.com"

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

127.0.0.1:6379> strlen name1
(integer) 13
127.0.0.1:6379> strlen age
(integer) 2

 

 

 类似资料: