Redis的五种常用数据类型

Redis

Redis 常见的数据类型
一、String 字符串
1.使用decrby命令递减键的值并返回递减后的值:
localhost:6379> SET count 10
OK
localhost:6379> DECRBY count 5
(integer) 5

设置了一个键count,初始值为10。然后使用DECRBY命令递减键的值5,返回递减后的值5。

2 使用append命令将值追加到键的末尾:
localhost:6379> APPEND mykey "world"
(integer) 5
localhost:6379> GET mykey
"hello world"

首先设置了一个键mykey,值为"hello"。然后使用APPEND命令将"value"追加到mykey的末尾,返回追加后字符串的总长度5。最后使用GET命令获取mykey的值,得到"hello world"。

3.使用strlen命令获取字符串的长度:
localhost:6379> SET mykey "hello"
OK
localhost:6379> STRLEN mykey
(integer) 5

在这个例子中,设置了一个键mykey,值为"hello"。然后使用STRLEN命令获取mykey的值的长度,返回值为5。

4.使用getrange命令获取指定索引范围内的子字符串:
localhost:6379> SET mykey "This is a string"
OK
localhost:6379> GETRANGE mykey 0 3
"This"

设置了一个键mykey,值为"This is a string"。然后使用GETRANGE命令获取mykey的值从索引0到3的子字符串,返回值为"This"。

5.使用setrange命令从指定索引开始替换字符串:
localhost:6379> SET mykey "Hello World"
OK
localhost:6379> SETRANGE mykey 6 "Redis"
(integer) 11
localhost:6379> GET mykey
"Hello Redis"

首先设置了一个键mykey,值为"Hello World"。然后使用SETRANGE命令从索引6开始替换mykey的值为"Redis",返回替换后字符串的总长度11。最后使用GET命令获取mykey的值,得到"Hello Redis"。

6.使用del命令根据键删除一个或多个元素:
localhost:6379> SET key1 "value1"
OK
localhost:6379> SET key2 "value2"
OK
localhost:6379> DEL key1 key2
(integer) 2

在这个例子中,首先设置了键key1和key2的值。然后使用DEL命令根据给定的键key1和key2删除它们,返回删除的元素数量2。

7.使用set命令将JSON格式的字符串保存为对象:
localhost:6379> SET user:1 "{\"name\":\"zhangsan\",\"age\":3}"
OK

使用SET命令将JSON格式的字符串{"name":"zhangsan","age":3}保存为键user:1的值。

8.使用getset命令先获取键的值再设置新的值:
localhost:6379> SET mykey "Hello"
OK
localhost:6379> GETSET mykey "World"
"Hello"
localhost:6379> GET mykey
"World"

首先设置了一个键mykey,值为"Hello"。然后使用GETSET命令先获取mykey的值为"Hello",再将mykey的值设置为"World"。最后使用GET命令获取mykey的值,得到"World"。

二、Hash 散列表
1.使用hset命令存储一个哈希键值对的集合:
localhost:6379> HSET user:1 name "zhangsan"
(integer) 1

使用HSET命令将键user:1的哈希表中的字段name设置为值"zhangsan"。

2.使用hget命令获取一个哈希键的值:
localhost:6379> HGET user:1 name
"zhangsan"

使用HGET命令获取键user:1的哈希表中字段name的值。

3.使用hmset命令存储一个或多个哈希键值对的集合:
localhost:6379> HMSET user:1 name "zhangsan" age 25 email "zhangsan@example.com"
OK

使用HMSET命令同时设置键user:1的哈希表中的字段name、age和email的值。

4.使用hmget命令获取多个指定键的值:
localhost:6379> HMGET user:1 name age email
1) "zhangsan"
2) "25"
3) "zhangsan@example.com"

使用HMGET命令获取键user:1的哈希表中字段name、age和email的值。

5.使用hexists命令判断哈希表中的字段名是否存在:
localhost:6379> HEXISTS user:1 name
(integer) 1

使用HEXISTS命令判断键user:1的哈希表中是否存在字段name,返回1表示存在。

6.使用hdel命令删除一个或多个字段:
localhost:6379> HDEL user:1 email
(integer) 1

使用HDEL命令删除键user:1的哈希表中字段email,返回1表示删除成功。

7.使用hgetall命令获取一个哈希表的所有键值对:
localhost:6379> HGETALL user:1
1) "name"
2) "zhangsan"
3) "age"
4) "25"

使用HGETALL命令获取键user:1的哈希表中的所有字段和对应的值。

8.使用hvals命令只返回字段值:
localhost:6379> HVALS user:1
1) "zhangsan"
2) "25"

使用HVALS命令获取键user:1的哈希表中所有字段的值。

9.使用hkeys命令只返回字段名:
localhost:6379> HKEYS user:1
1) "name"
2) "age"

使用HKEYS命令获取键user:1的哈希表中所有字段的字段名。

10.使用hlen命令返回键的哈希表的元素个数:
localhost:6379> HLEN user:1
(integer) 2

使用HLEN命令获取键user:1的哈希表中元素的个数,返回2表示有两个字段。

11.使用hincrby命令指定增量字段的值:
localhost:6379> HSET user:1 score 100
(integer) 1
localhost:6379> HINCRBY user:1 score 50
(integer) 150

首先使用HSET命令设置键user:1的哈希表中字段score的值为100,然后使用HINCRBY命令增加字段score的值50,返回增量后的值150。

12.使用hsetnx命令如果字段不存在则创建,存在则创建失败:
localhost:6379> HSETNX user:1 name "newName"
(integer) 1
localhost:6379> HSETNX user:1 name "anotherName"
(integer) 0
localhost:6379> HGET user:1 name
"newName"

首先使用HSETNX命令设置键user:1的哈希表中字段name的值为"newName",返回1表示创建成功。然后再次使用HSETNX命令尝试设置字段name的值为"anotherName",返回0表示创建失败,因为字段name已经存在。最后使用HGET命令获取字段name的值,得到"newName"。

三、List 链表
1.lpush key value: 向链表左侧添加——头插法
localhost:6379> lpush key A
(integer) 1
localhost:6379> lpush key B
(integer) 2
localhost:6379> lpush key C D E F G
(integer) 7
localhost:6379> LRANGE key 0 -1
1) "G"
2) "F"
3) "E"
4) "D"
5) "C"
6) "B"
7) "A"
2.rpush key value: 向链表右侧添加——尾插法
localhost:6379> RPUSH key1 1
(integer) 1
localhost:6379> RPUSH key1 1 2 3 4 5 6
(integer) 7
localhost:6379> LRANGE key1 0 -1
1) "1"
2) "1"
3) "2"
4) "3"
5) "4"
6) "5"
7) "6"
3.lpop key: 从左边移出一个元素,就是从最左边的那个节点剔除掉。
localhost:6379> LRANGE key 0 -1
1) "G"
2) "F"
3) "E"
4) "D"
5) "C"
6) "B"
7) "A"
localhost:6379> LPOP key
"G"
localhost:6379> LPOP key
"F"
localhost:6379> LPOP key
"E"
localhost:6379> LPOP key
"D"
localhost:6379> LPOP key
"C"
localhost:6379> LPOP key
"B"
localhost:6379> LPOP key
"A"
localhost:6379> LPOP key
(nil)
4.rpop key: 从右边移出一个元素,就是从最右边的那个节点剔除掉。
localhost:6379> LRANGE key1 0 -1
1) "1"
2) "1"
3) "2"
4) "3"
5) "4"
6) "5"
7) "6"
localhost:6379> RPOP key1
"6"
localhost:6379> RPOP key1
"5"
localhost:6379> RPOP key1
"4"
localhost:6379> RPOP key1
"3"
localhost:6379> RPOP key1
"2"
localhost:6379> RPOP key1
"1"
localhost:6379> RPOP key1
"1"
localhost:6379> RPOP key1
(nil)
5.lrange key start end lrange: 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列表起始索引为 0。如果是要获取全部的元素:lrange key 0 -1
6.llen key: 返回链表中元素的个数 相当于关系型数据库中 select count(*)
localhost:6379> RPUSH wzm 1 2 3
(integer) 3
localhost:6379> LLEN wzm
(integer) 3
7.lindex key indexnumber :lindex 命令用来返回指定索引的元素,索引从 0 开始,如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。如果要将列表类型当做数组来用,lindex 命令是必不可少的。
localhost:6379> LINDEX wzm 2
"3"
localhost:6379> 
8.lset key indexnumber value: 是另一个通过索引操作列表的命令,它会将索引为 index的元素赋值为 value,原来的值会被覆盖。如果该列表不存在就会报错。所以使用这个命令之前先使用exists判断一下。
localhost:6379> LSET wzm 0 java
OK
localhost:6379> LSET wzm 99 java
(error) ERR index out of range
localhost:6379> LINDEX wzm 0
"java"
9.lrem key count value: 移除key链表中count个元素的value值,精确匹配,如果链表中可以有多个重复的值,这里的count指的是可以删除多个相同key的值。
localhost:6379> LRANGE wzm 0 -1
1) "java"
2) "java"
3) "2"
4) "3"
localhost:6379> LREM wzm 2 java
(integer) 2
localhost:6379> LRANGE wzm 0 -1
1) "2"
2) "3"
localhost:6379> 
10.ltrim list startIndex endIndex :通过下标截取指定的长度,这个时候list已经改变了,只剩下截断的元素。
localhost:6379> LRANGE wzm666 0 -1
 1) "A"
 2) "B"
 3) "C"
 4) "D"
 5) "E"
 6) "F"
 7) "G"
 8) "H"
 9) "I"
10) "J"
11) "K"
12) "L"
13) "M"
14) "M"
15) "O"
16) "P"
localhost:6379> LTRIM wzm666 2 16
OK
localhost:6379> LRANGE wzm666 0 -1
 1) "C"
 2) "D"
 3) "E"
 4) "F"
 5) "G"
 6) "H"
 7) "I"
 8) "J"
 9) "K"
10) "L"
11) "M"
12) "M"
13) "O"
14) "P"
11.rpoplpush source destination :移除当前的source链表中的最后一个元素,并且将该元素移动到destination链表当中。
localhost:6379> LRANGE wzm 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
localhost:6379> LRANGE wzm666 0 -1
 1) "C"
 2) "D"
 3) "E"
 4) "F"
 5) "G"
 6) "H"
 7) "I"
 8) "J"
 9) "K"
10) "L"
11) "M"
12) "M"
13) "O"
14) "P"
localhost:6379> RPOPLPUSH wzm wzm666
"1"
localhost:6379> LRANGE wzm 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
localhost:6379> RPOPLPUSH wzm wzm666
"2"
localhost:6379> LRANGE wzm666 0 -1
 1) "2"
 2) "1"
 3) "C"
 4) "D"
 5) "E"
 6) "F"
 7) "G"
 8) "H"
 9) "I"
10) "J"
11) "K"
12) "L"
13) "M"
14) "M"
15) "O"
16) "P"
12.linsert key BEFORE|AFTER pivot value:在key列表的pivot元素的前/后面插入元素value。
localhost:6379> LRANGE m 0 -1
1) "6"
2) "6"
3) "="
4) "36"
localhost:6379> LINSERT m BEFORE "6" "*"
(integer) 5
localhost:6379> LRANGE m 0 -1
1) "*"
2) "6"
3) "6"
4) "="
5) "36"
localhost:6379> 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值