zoukankan      html  css  js  c++  java
  • redis 学习(5)-- 列表类型

    redis 学习(5)-- 列表类型

    列表特点

    • 有序、可以重复、左右两边插入弹出
    • 索引相关知识
      • 索引从左往右,从0开始逐个增大 0 1 2 3 4 5
      • 索引从右往左,从-1开始逐个减小 -6 -5 -4 -3 -2 -1

    重要 API

    命令 含义
    rpush key value1 [value2...] 在列表后侧添加一个或多个值
    lpush key value1 [value2...] 在列表左侧添加一个或多个值
    linsert key before/after value newValue 在列表指定的value前/后插入newValue,时间复杂度为O(n)
    lpop key 从列表左侧弹出一个值
    rpop key 从列表右侧弹出一个值
    lrem key count value 根据count值,从列表中删除值为value的项,时间复杂度为O(n)。count > 0 时,从左往右遍历,删除最多count个与value相等的值;count < 0 时,从右往左遍历,删除最多Math.abs(count)个与value相等的值;count = 0 时,删除所有与value相等的值
    trim key start end 对一个列表进行修剪,只保留指定区间内的元素,不在区间内的元素都将被删除,时间复杂度为O(n)
    lrange key start end 获取列表指定索引范围的所有元素,时间复杂度为O(n)
    lindex key index 获取列表指定索引的元素,时间复杂度为O(n)
    llen key 获取列表长度,时间复杂度为O(1)
    lset key index newValue 设置列表指定索引的值为newValue,时间复杂度为O(n)。必须存在这个值才能设置成功,否则会报错
    blpop key timeout 移除并获取列表左边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止。timeout单位为秒,timeout=0时不阻塞
    brpop key timeout 移除并获取列表右边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止。timeout单位为秒,timeout=0时不阻塞

    演示

    实战

    时间轴功能(TimeLine)

    使用 lpush 更新,rpop、lpop 删除,lrange 做排序分页等。类似微博的发布信息流。

    一些小建议

    当我们想实现一些功能的时候,可以结果各种命令组合使用。

    1. LRUSH + LPOP = Stack (实现栈)
    2. LPUSH + RPOP = Queue (实现队列)
    3. LPUSH + LTRIM = Capped Collection (实现有固定数量的列表)
    4. LPUSH + BRPOP = Message Queue (实现消息队列)
  • 相关阅读:
    React Native 开发豆瓣评分(三)集成 Redux
    React Native 开发豆瓣评分(二)路由配置
    React Native 开发豆瓣评分(一)环境搭建&配置模拟器
    VSCode 搭建 React Native 环境
    webpack4 + ejs 构建多页应用
    react-native 沉浸式状态栏
    react-native——tab配置及跳转
    uni-app 入门之 nvue (weex) 爬坑记
    javascript中bind()、call()、apply()的使用
    mysql数据库中文乱码配置文件解决以及常见mysql命令
  • 原文地址:https://www.cnblogs.com/weixuqin/p/10937695.html
Copyright © 2011-2022 走看看