redis(1)

Redis 常用命令:
List 列表
常用命令: lpush,rpush,lpop,rpop,lrange等

Redis的list在底层实现上并不是数组而是链表,Redis list 的应用场景非常多,也是Redis最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用Redis的 list 结构来实现。

Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。

另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。

lists的常用操作包括LPUSH、RPUSH、LRANGE、RPOP等。可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素,RPOP从右侧弹出数据。来看几个例子::

//新建一个list叫做mylist,并在列表头部插入元素"Tom"
127.0.0.1:6379> lpush mylist “Tom”
//返回当前mylist中的元素个数
(integer) 1
//在mylist右侧插入元素"Jerry"
127.0.0.1:6379> rpush mylist “Jerry”
(integer) 2
//在mylist左侧插入元素"Andy"
127.0.0.1:6379> lpush mylist “Andy”
(integer) 3
//列出mylist中从编号0到编号1的元素
127.0.0.1:6379> lrange mylist 0 1

  1. “Andy”

  2. “Tom”
    //列出mylist中从编号0到倒数第一个元素
    127.0.0.1:6379> lrange mylist 0 -1

  3. “Andy”

  4. “Tom”

  5. “Jerry”
    //从右侧取出最后一个数据
    127.0.0.1:6379> rpop mylist
    “Jerry”
    //再次列出mylist中从编号0到倒数第一个元素
    127.0.0.1:6379> lrange mylist 0 -1

  6. “Andy”

  7. “Tom”
    Set 集合
    常用命令: sadd,smembers,sunion 等

    set 是无序不重复集合,list是有序可以重复集合,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要功能,这个也是list所不能提供的。

    可以基于 set 轻易实现交集、并集、差集的操作。比如:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合Redis可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能,也就是求交集的过程。set具体命令如下:

//向集合myset中加入一个新元素"Tom"
127.0.0.1:6379> sadd myset “Tom”
(integer) 1
127.0.0.1:6379> sadd myset “Jerry”
(integer) 1
//列出集合myset中的所有元素
127.0.0.1:6379> smembers myset

  1. “Jerry”

  2. “Tom”
    //判断元素Tom是否在集合myset中,返回1表示存在
    127.0.0.1:6379> sismember myset “Tom”
    (integer) 1
    //判断元素3是否在集合myset中,返回0表示不存在
    127.0.0.1:6379> sismember myset “Andy”
    (integer) 0
    //新建一个新的集合yourset
    127.0.0.1:6379> sadd yourset “Tom”
    (integer) 1
    127.0.0.1:6379> sadd yourset “John”
    (integer) 1
    127.0.0.1:6379> smembers yourset

  3. “Tom”

  4. “John”
    //对两个集合求并集
    127.0.0.1:6379> sunion myset yourset

  5. “Tom”

  6. “Jerry”

  7. “John”
    Sorted Set 有序集合
    常用命令: zadd,zrange,zrem,zcard等

    和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。

    在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 SortedSet 结构进行存储。

    很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

//新增一个有序集合hostset,加入一个元素baidu.com,给它赋予score:1
127.0.0.1:6379> zadd hostset 1 baidu.com
(integer) 1
//向hostset中新增一个元素bing.com,赋予它的score是30
127.0.0.1:6379> zadd hostset 3 bing.com
(integer) 1
//向hostset中新增一个元素google.com,赋予它的score是22
127.0.0.1:6379> zadd hostset 22 google.com
(integer) 1
//列出hostset的所有元素,同时列出其score,可以看出myzset已经是有序的了。
127.0.0.1:6379> zrange hostset 0 -1 with scores

  1. “baidu.com”

  2. “1”

  3. “google.com”

  4. “22”

  5. “bing.com”

  6. “30”
    //只列出hostset的元素
    127.0.0.1:6379> zrange hostset 0 -1

  7. “baidu.com”

  8. “google.com”

  9. “bing.com”
    Hash
    常用命令: hget,hset,hgetall 等。

    Hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以Hash数据结构来存储用户信息,商品信息等等。比如下面我就用 hash 类型存放了我本人的一些信息:

//建立哈希,并赋值
127.0.0.1:6379> HMSET user:001 username antirez password P1pp0 age 34
OK
//列出哈希的内容
127.0.0.1:6379> HGETALL user:001

  1. “username”
  2. “antirez”
  3. “password”
  4. “P1pp0”
  5. “age”
  6. “34”
    //更改哈希中的某一个值
    127.0.0.1:6379> HSET user:001 password 12345
    (integer) 0
    //再次列出哈希的内容
    127.0.0.1:6379> HGETALL user:001
  7. “username”
  8. “antirez”
  9. “password”
  10. “12345”
  11. “age”
  12. “34”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值