木心

毕竟几人真得鹿,不知终日梦为鱼

导航

redis命令操作(二)--哈希Hash,列表List

1、Redis 哈希(Hash)

参考菜鸟教程:http://www.runoob.com/redis/redis-hashes.html

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。如下:

  设置key

127.0.0.1:6379> hmset a id 1 name "zhangsan" age 10
OK

  查看所有内容(获取在哈希表中指定 key 的所有字段和值)

127.0.0.1:6379> hgetall a
1) "id"
2) "1"
3) "name"
4) "zhangsan"
5) "age"
6) "10"

  查看哈希表 key 中,指定的字段是否存在,存在为1

127.0.0.1:6379> hexists a age
(integer) 1

   获取存储在哈希表中指定字段的值

127.0.0.1:6379> hget a age
"10"

127.0.0.1:6379> hmget a id age
1) "1"
2) "20"

  为哈希表 key 中的指定字段的整数值加上增量 increment 

127.0.0.1:6379> hincrby a age 10
(integer) 20
127.0.0.1:6379> hget a age
"20"

  获取所有哈希表中的字段

127.0.0.1:6379> hkeys a
1) "id"
2) "name"
3) "age"

  获取哈希表中字段的数量

127.0.0.1:6379> hlen a
(integer) 3

  只有在字段 field 不存在时,设置哈希表字段的值

127.0.0.1:6379> hsetnx a age 30
(integer) 0
127.0.0.1:6379> hmget a id age
1) "1"
2) "20"

 

2、Redis 列表(List)

参考菜鸟教程http://www.runoob.com/redis/redis-lists.html

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

  判断key是否存在,返回0表示不存在,返回1表示存在

127.0.0.1:6379> exists a
(integer) 0

  lpush 命令:将一个值插入到已存在的列表头部(左边);使用 lpush 命令将5个值插入到名为 a 的列表当中

127.0.0.1:6379> lpush a spring
(integer) 1
127.0.0.1:6379> lpush a springmvc
(integer) 2
127.0.0.1:6379> lpush a mybatis
(integer) 3
127.0.0.1:6379> lpush a mysql
(integer) 4
127.0.0.1:6379> lpush a redis
(integer) 5

  查看类型

127.0.0.1:6379> type a
list

  查看列表长度

127.0.0.1:6379> llen a
(integer) 5

  查看列表的内容,获取列表指定范围内的元素

127.0.0.1:6379> lrange a 0 4
1) "redis"
2) "mysql"
3) "mybatis"
4) "springmvc"
5) "spring"

  通过索引查看列表中的元素

127.0.0.1:6379> lindex a 0
"redis"
127.0.0.1:6379> lindex a 3
"springmvc"
127.0.0.1:6379> lindex a 4
"spring"

  通过索引设置列表元素的值

127.0.0.1:6379> lset a 0 redis001
OK
127.0.0.1:6379> lrange a 0 4
1) "redis001"
2) "mysql"
3) "mybatis"
4) "springmvc"
5) "spring"

  在列表尾部(右边)插入值

127.0.0.1:6379> rpush a mongodb
(integer) 6
127.0.0.1:6379> llen a
(integer) 6127.0.0.1:6379> lrange a 0 5
1) "redis001"
2) "mysql"
3) "mybatis"
4) "springmvc"
5) "spring"
6) "mongodb"

  为已存在的列表添加值

127.0.0.1:6379> lrange a 0 6
1) "haha"
2) "redis001"
3) "mysql"
4) "mybatis"
5) "springmvc"
6) "spring"
7) "mongodb"
127.0.0.1:6379> rpushx a hehe (integer) 8 127.0.0.1:6379> lrange a 0 7 1) "haha" 2) "redis001" 3) "mysql" 4) "mybatis" 5) "springmvc" 6) "spring" 7) "mongodb" 8) "hehe"

  移出并获取列表的第一个元素

127.0.0.1:6379> lpop a
"haha"
127.0.0.1:6379> lrange a 0 7
1) "redis001"
2) "mysql"
3) "mybatis"
4) "springmvc"
5) "spring"
6) "mongodb"
7) "hehe"

  移出并获取最后一个元素

127.0.0.1:6379> rpop a
"hehe"
127.0.0.1:6379> lrange a 0 7
1) "redis001"
2) "mysql"
3) "mybatis"
4) "springmvc"
5) "spring"
6) "mongodb"

  对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

127.0.0.1:6379> lrange a 0 5
1) "redis001"
2) "mysql"
3) "mybatis"
4) "springmvc"
5) "spring"
6) "mongodb"
127.0.0.1:6379> ltrim a 1 4
OK
127.0.0.1:6379> lrange a 0 5
1) "mysql"
2) "mybatis"
3) "springmvc"
4) "spring"

  移除列表元素(指定value);移除"springmvc"

127.0.0.1:6379> lrem a 1 springmvc
(integer) 1
127.0.0.1:6379> llen a
(integer) 3
127.0.0.1:6379> lrange a 0 2
1) "mysql"
2) "mybatis"
3) "spring"

127.0.0.1:6379> lpush a mysql
(integer) 4
127.0.0.1:6379> lrange a 0 40
1) "mysql"
2) "mysql"
3) "mybatis"
4) "spring"
127.0.0.1:6379> lrem a 2 mysql
(integer) 2
127.0.0.1:6379> lrange a 0 10
1) "mybatis"
2) "spring"


posted on 2019-04-18 15:29  wenbin_ouyang  阅读(1066)  评论(0编辑  收藏  举报