本实例以Redis 4.0.1 为例,来演示使用Redis命令对散列(Hash)类型数据的操作。

LPUSH 向列表中增加数据(头部)

1. 语法格式

将所有指定的值插入存储在键的列表的头部。 如果键不存在,则在执行推动操作之前将其创建为空列表。 当key保存不是列表的值时,返回错误。 可以使用单个命令调用来推送多个元素,只需在命令的末尾指定多个参数即可。 元素一个接一个插入到列表的头部,从最左边的元素到最右边的元素。 因此,例如命令LPUSH mylist a b c将导致包含c作为第一个元素的列表,b作为第二个元素和第三个元素。
1
LPUSH key value [value ...]

2.返回值

推送操作后的列表的长度。

3.示例

1
2
3
4
127.0.0.1:6379> lpush my-list a b c
(integer) 3
127.0.0.1:6379> lpush my-list d
(integer) 4

LPUSHX 向列表中增加数据(头部)

1. 语法格式

与 LPUSH 方法类似,不同之处在于,当key不存在时候不插入数据。 在key存储的列表的头部插入值,只有当密钥已经存在并保存一个列表时。 与LPUSH相反,当钥匙不存在时,不会执行任何操作。
1
LPUSHX key value

2.返回值

推送操作后的列表的长度。

3.示例

1
2
3
4
5
6
7
8
9
127.0.0.1:6379> lpushx my-list a
(integer) 0
127.0.0.1:6379> lpush my-list a
(integer) 1
127.0.0.1:6379> lpushx my-list a
(integer) 2
127.0.0.1:6379> lrange my-list 0 -1
1) "a"
2) "a"

LRANGE 去掉指定位置的数据

1. 语法格式

返回存储在键中的列表的指定元素。 偏移开始和停止是基于零的索引,0是列表的第一个元素(列表的头),1是下一个元素,等等。 这些偏移量也可以是负数,表示从列表末尾开始的偏移量。 例如,-1是列表的最后一个元素,-2是倒数第二个,依此类推。 取值范围:闭合区间,包含起始值
1
LRANGE key start stop

2.返回值

指定范围内的元素列表。

3.示例

1
2
3
4
5
6
7
8
9
10
11
12
13
127.0.0.1:6379> lrange my-list 0 2
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> lrange my-list 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lrange my-list 0 -2
1) "d"
2) "c"
3) "b"

RPUSH 向列表中增加数据(尾部)

1. 语法格式

在存储在键的列表尾部插入所有指定的值。 如果键不存在,则在执行推送操作之前将其创建为空列表。 当key保存不是列表的值时,返回错误。 可以使用单个命令调用来推送多个元素,只需在命令的末尾指定多个参数即可。 元素一个接一个地插入列表的尾部,从最左边的元素到最右边的元素。 因此,例如命令RPUSH mylist a b c将导致包含第一个元素的列表b作为第二个元素,c作为第三个元素。
1
RPUSH key value [value ...]

2.返回值

推送操作后的列表的长度。

3.示例

1
2
3
4
5
6
7
8
127.0.0.1:6379> rpush my-list2 hello wolrd
(integer) 2
127.0.0.1:6379> rpush my-list2 nihao
(integer) 3
127.0.0.1:6379> lrange my-list2 0 -1
1) "hello"
2) "wolrd"
3) "nihao"

RPUSHX 向列表中增加数据(尾部)

1. 语法格式

与RPUSH类似,不同之处在于,当key不存在时候不插入数据。 只有当密钥已经存在并保存列表时,才会在存储在密钥中的列表的尾部插入值。 与RPUSH相反,当钥匙不存在时,不会执行任何操作。
1
RPUSHX key value

2.返回值

推送操作后的列表的长度。

3.示例

1
2
3
4
5
6
7
8
9
127.0.0.1:6379> rpushx my-list a
(integer) 0
127.0.0.1:6379> rpush my-list a
(integer) 1
127.0.0.1:6379> rpushx my-list a
(integer) 2
127.0.0.1:6379> lrange my-list 0 -1
1) "a"
2) "a"

LINSERT 向列表中指定位置插入数据

1. 语法格式

在参考值枢轴之前或之后插入存储在键中的列表中的值。 当键不存在时,它被认为是空列表,不执行任何操作。 当键存在但不包含列表值时返回错误。
1
LINSERT key BEFORE|AFTER pivot value

2.返回值

插入操作后的列表的长度,或者当没有找到值的时候的-1。

3.示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
127.0.0.1:6379> lrange my-list2 0 -1
1) "hello"
2) "wolrd"
3) "nihao"
127.0.0.1:6379> linsert my-list2 before hello java
(integer) 4
127.0.0.1:6379> lrange my-list2 0 -1
1) "java"
2) "hello"
3) "wolrd"
4) "nihao"
127.0.0.1:6379> linsert my-list2 after hello java
(integer) 5
127.0.0.1:6379> lrange my-list2 0 -1
1) "java"
2) "hello"
3) "java"
4) "wolrd"
5) "nihao"

LSET 修改指定位置的数据

1. 语法格式

根据index修改指定位置的值,超出范围的索引返回错误。
1
LSET key index value

2.返回值

OK

3.示例

1
2
3
4
5
6
7
8
127.0.0.1:6379> rpush my-list3 hello
(integer) 1
127.0.0.1:6379> lset my-list3 1 world
(error) ERR index out of range
127.0.0.1:6379> lset my-list3 0 world
OK
127.0.0.1:6379> lrange my-list3 0 -1
1) "world"

LREM 删除数据

1. 语法格式

从存储在键中的列表中删除等于值的元素的第一个计数事件。 计数参数以下列方式影响操作: count> 0:删除等于从头到尾移动的值的元素。 count <0:删除等于从尾到头移动的值的元素。 count = 0:删除等于value的所有元素。
1
LREM key count value

2.返回值

删除元素的数量。

3.示例

1
2
3
4
5
6
127.0.0.1:6379> rpush my-list4 hello hello hello hello
(integer) 4
127.0.0.1:6379> lrem my-list4 1 hello
(integer) 1
127.0.0.1:6379> lrem my-list4 0 hello
(integer) 3

LTRIM 保留指定key范围内的数据

1. 语法格式

修剪现有列表,使其只包含指定的指定范围的元素。 起始和停止都是基于零的索引,其中0是列表(头)的第一个元素,1是下一个元素,等等。
1
LTRIM key start stop

2.返回值

OK

3.示例

1
2
3
4
5
6
7
127.0.0.1:6379> rpush my-list5 a b c
(integer) 3
127.0.0.1:6379> ltrim my-list5 0 1
OK
127.0.0.1:6379> lrange my-list5 0 -1
1) "a"
2) "b"

LPOP 移除头部元素

1. 语法格式

删除并返回存储在键中的列表的第一个元素。
1
LPOP key

2.返回值

如果存在,第一个元素的值 如果不存在,‘nil’

3.示例

1
2
3
4
5
6
7
127.0.0.1:6379> rpush my-list6 a b c
(integer) 3
127.0.0.1:6379> lpop my-list6
"a"
127.0.0.1:6379> lrange my-list6 0 -1
1) "b"
2) "c"

RPOPLPUSH 将移除尾部元素保存另外的集合中(头)

1. 语法格式

原子地返回并删除存储在源中的列表的最后一个元素(尾部),并将元素推送到存储在目的地的列表的第一个元素(头)。
1
RPOPLPUSH source destination

2.返回值

该元素被弹出和推送。

3.示例

1
2
3
4
5
6
7
8
9
10
11
127.0.0.1:6379> rpush my-list7 a b
(integer) 2
127.0.0.1:6379> rpush my-list8 c
(integer) 1
127.0.0.1:6379> rpoplpush my-list7 my-list8
"b"
127.0.0.1:6379> lrange my-list7 0 -1
1) "a"
127.0.0.1:6379> lrange my-list8 0 -1
1) "b"
2) "c"

LINDEX 取得指定位置的数据

1. 语法格式

返回存储在key中的列表中索引索引处的元素。 索引为零,所以0表示第一个元素,第二个元素为1,依此类推。 负指数可用于指定从列表尾部开始的元素。 这里,-1表示最后一个元素,-2表示倒数第二个等等。 当键值不是列表时,返回错误。
1
LINDEX key index

2.返回值

请求的元素,或者当索引超出范围时为nil。

3.示例

1
2
3
4
127.0.0.1:6379> rpush my-list a b
(integer) 2
127.0.0.1:6379> lindex my-list 0
"a"

LLEN 返回列表元素的个数

1. 语法格式

返回存储在键中的列表的长度。 如果键不存在,则将其解释为空列表,并返回0。 当key存储的值不是列表时返回错误。
1
LLEN key

2.返回值

键列表的长度。

3.示例

1
2
3
4
5
6
127.0.0.1:6379> rpush my-list a b
(integer) 2
127.0.0.1:6379> llen my-lsit
(integer) 0
127.0.0.1:6379> llen my-list
(integer) 2