文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis 的基本特性和 5 个常用数据结构

2019-02-26 15:26

关注

Redis 的基本特性和 5 个常用数据结构

[TOC]

1. 基本特性

2. 常用数据结构

2.1. sting 字符串

2.1.1. 结构
2.1.2. 场景
2.1.3. 专有 API
# key 不管是否存在,都设置:存在则更新,不存在则新增
> set key1 value

# key 不存在才设置 <==> 新增
> setnx key value

# key 存在才设置 <==> 更新
> set key value xx

# 批量设置
> mset key value [key value ...]

# 批量获取
> mget key [ key ...]

# 获取字符串长度
> strlen key

子串

# 追加子串
# 返回追加成功的字符串长度
> append key value

# 获取子串
> getrange key start end

# 覆盖子串
> setrange key offset value

计数器

# 递增
# 不能超过 Long.Max 9223372036854775807
> incr key
> incrby key increment

# 递减
# 不能低于 Long.Min -9223372036854775808
> decr key
> decrby key decrement

过期和删除

# 删除
> del key [key ...]

# 设置过期时间(单位:秒),到期后自动删除
> expire key seconds

# 查看效期
> ttl key

2.2. hash 哈希

2.2.1. 结构
2.2.3. 专有 API

基本操作

# 为 key 增加一个键值对
# field 存在则修改,不存在,则新增
> hset key field value

# field 不存在才设置 <==> 新增
> hsetnx key field value

# 为 key 增加多个键值对
> hmset key field value [field value ...]

# 删除 key 中指定的键
> hdel key field [field ...]

# 递增
> hincrby key field increment
> hincrbyfloat key field increment

查询

# 获取 key 的一个键的值
> hget key field

# 获取 key 的多个键的值
> hmget key field [field ...]

# 获取 key 的所有 field 和 value
> hgetall key

# 返回所有 field
> hkeys key

# 返回所有 value
> hvals key

# 判断 hash 中的一个 field 是否存在
> hexists key field

# 判断 hash 中所有 field 的数量
> hlen key

2.3. list 列表

2.3.1. 特点
2.3.2. 场景
2.3.3. 专有 API

增(

# 从列表左边添加
> lpush key value [value ...]

# 从列表右边添加
> rpush key value [value ...]

# 在列表元素 pivot 的前面或后面插入一个新元素
> linsert key BEFORE|AFTER pivot newValue

删(

# 从列表左边弹出一个 value
> lpop key

# 从列表右边弹出一个 value
> rpop key

# 删除所有 value 相等的项
> lrem key count value
# count = 0 删除所有 value 相等的项
# count > 0 从左到右,删除最多 count 个 value 相等的项
# count < 0 从右到左,删除最多 Math.abs(count) 个 value 相等的项

# 按照索引范围修剪列表
> ltrim key start stop

# 修改指定下标的元素
> lset key index newValue

# 获取指定索引范围的所有项(包含 stop 的项)
> lrange key start stop

# 查询一个 key 下的所有项
> lrange key 0 -1

# 获取指定下标的项
> lindex key index

# 获取列表长度
> llen key

其它

# 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
# timeout 单位:秒

# lpop 的阻塞版本
> blpop key [key ...] timeout

# rpop 的阻塞版本
> brpop key [key ...] timeout

2.4. set 集合

2.4.1. 特点
2.4.2. 场景
2.4.3. 专有 API
# 添加元素到集合中(重复的元素会被忽略)
> sadd key member [member ...]

# 从集合中删除元素
> srem key member [member ...]

# 计算集合中元素个数
> scard key

# 检查集合中是否存在指定的元素
> sismember key member

# 从集合中随机取出 count 个元素
# 不会破坏集合
> srandmember key [count]

#从集合中随机弹出 count 个元素
#会破坏集合(元素的顺序)
> spop key [count]

# 取出集合中所有元素
> smembers key
# 注意:1. 获取到的元素是无序的;2. 元素较多时会阻塞其它操作
# 替代:sscan ?

集合间

# 获取一个集合与其它集合的差集
> sdiff key [key ...]

# 获取一个集合与其它集合的交集
> sinter key [key ...]

# 获取一个集合与其它集合的并集
> sunion key [key ...]

2.5. zset 有序集合

2.5.1. 特点
2.5.2. 场景
2.5.3. 专有 API

基本操作

# 添加元素
# score 可重复,member 不可以重复
> zadd key score member [score member ...]

# 删除元素
> zrem key member [member ...]

# 增加或减少元素的分数(score)
# increment 传负数表示减少
> zincrby key increment member

# 返回元素总个数
> zcard key

排名和分数

# 返回元素分数(score)
> zscore key member

# 获取元素的升序(score 从小到大)排名
> zrank key member

# 获取元素的降序(score 从大到小)排名
> zrevrank key member

# 获取指定分数间的成员数量
> zcount

根据范围获取元素

# 获取指定索引范围内的升序(score 从小到大)元素[分数]
# star 0 第一条;stop -1 最后一条
zrange key start stop [withscores]

# 获取指定索引范围内的降序(score 从大到小)元素[分数]
zrevrange key start stop [withscores]

# 返回指定分数(score)范围内的升序元素[分数]
> zrangebyscore key min max [withscores]

# 返回指定分数(score)范围内的降序元素[分数]
> zrevrangebyscore key max min [withscores]

根据范围移除元素

# 删除指定排名范围内的元素
> zremrangebyrank key start stop

# 删除指定分数范围内的元素
> zremrangebyscore key min max
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯