热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis5.0数据结构与命令

1、redis支持如下5种数据结构数据结构说明简介String字符串key-valHash哈希filed-val映射表List列表双向链表Set集合element(元素无重复)So
1、redis 支持如下5种数据结构
数据结构说明简介
String字符串key-val
Hash哈希filed-val 映射表
List列表双向链表
Set集合element(元素无重复)
Sorted Set有序集合element+score(元素无重复+分值)
2、通用命令
命令作用时间复杂度
keys pattern查找所有符合匹配的keyO(n)
dbsize返回当前数据库的数量O(1)
flushdb清空当前数据库所有keyO(n)
flushall清空所有数据库所有keyO(n)
type key返回key的数据类型O(1)
rename key new_key修改key名称O(1)
exists key检查给定key是否存在O(1)
del key删除keyO(1)
expire key seconds给key设定过期时间O(1)
ttl key查看key剩余过期时间O(1)
persist key移除key剩余过期时间O(1)
3、String
命令作用时间复杂度
set key val设置key valO(1)
get key获取keyO(1)
del key删除keyO(1)
set key val xx更新key(不存在key时更新失败)O(1)
setnx key valkey不存在时设置keyO(1)
setex key val seconnds设置key并设置过期时间O(1)
mset key1 val1 key2 val2 ...批量设置keyO(n)
mget key1 key2 ...批量获取keyO(n)
incr key valkey自增1;key不存在,set key val后自增1O(1)
decr key valkey自减1;key不存在,set key val后自减1O(1)
incrby key nkey自增k;key不存在,set key val后自增kO(1)
decrby key nkey自减k;key不存在,set key val后自减kO(1)
getset key valset key val并返回旧的值O(1)
append key val给key追加值valO(1)
strlen key获取key长度O(1)
incrbyfloat key f给key增加小数O(1)
setrange key offset val用val从offset开始覆盖O(1)
getrange key start end获取指定区间的valO(1)
4、Hash
命令作用时间复杂度
hset key filed val设置key filed valO(1)
hget key filed获取key filedO(1)
hdel key filed删除key filedO(1)
hexists key filed检测key filed是否存在O(1)
hlen key获取key属性值个数O(1)
hsetnx key filedkey filed不存在时设置key filedO(1)
hincrby key filed nkey filed自增/自减(n可以为负数)O(1)
hincrbyfloat key filed fkey filed自增/自减(f可以为负数)O(1)
hmset key filed1 val1 filed2 val2 ...批量设置key filedO(n)
hmget key filed1 filed2 ...批量获取key filedO(n)
hgetall key获取key所有filed值O(n)
hgetkeys key获取key所有filed keyO(n)
hgetvals key获取key所有filed valO(n)
5、List
命令作用时间复杂度
lpush key val1 val2 ...从头部插入一个/多个valO(1~n)
lpop key移除并返回头部第一个元素O(1)
rpush key val1 val2 ...从尾部插入一个/多个valO(1~n)
rpop key移除并返回尾部第一个元素O(1)
lrang key start end返回指定区间元素O(s+n) s为偏移量, n=e-s
ltrim key start stop对列表进行修剪, 保留指定区间的元素O(n)
llen key获取key长度O(1)
lset key index val设置指定索引index valO(1~n)
linsert key before/after existing_val new_val在指定存在值之前/之后插入元素O(n)
lindex key position获取指定position元素O(1~n)
lrem key count val移除与count相等的valO(n)
lpushx key val1 val2 ...从头部插入一个/多个已存在列表的valO(1~n)
rpushx key val1 val2 ...从尾部插入一个/多个已存在列表的valO(1~n)
blpop key seconds阻塞式lpopO(1)
brpop key seconds阻塞式rpopO(1)
  • 常见场景
场景命令方法
栈(Stack)lpush + lpop
队列(Queue)lpush + rpop
固定列表(Capped Collection)lpush + ltrim
消息列表(Message Queue)lpush + brpop
6、集合
命令作用时间复杂度
sadd key val1 val2 ...向集合添加一个/多个元素(已存在元素则忽略)O(n)
smembers key获取所有集合元素O(n)
sismember key val1检测集合元素是否存在O(1)
srandmember key {count}随机获取指定个数集合元素(不会删除)O(1~n)
spop key随机移除一个集合元素并返回(会删除)O(1)
srem key val val1 ...删除集合元素O(1~n)
smove key key1 val将key集合中val移到key1集合O(1)
scard key获取集合数量O(1)
sinter key key1 ...获取集合交集O(n)
sunion key key1 ...获取集合并集O(n)
sdiff key key1 ...获取集合差集O(n)
sinterstore new_key key key1 ...获取集合交集并存储到新集合O(n)
sunionstore new_key key key1 ...获取集合并集并存储到新集合O(n)
sdiffstore new_key key key1 ...获取集合差集并存储到新集合O(n)
7、有序集合
命令作用时间复杂度
zadd key score val ...向集合添加一个/多个元素O(log(N) * M) M 元素个数
zcard key获取集合数量O(1)
zscore key val获取元素分数值O(1)
zcount key mix max获取分数区间[mix, max]集合元素数量O(log(N) + M)
zlexcount key mix max获取元素字典区间[mix, max]集合元素数量O(log(N) + M)
zincrby key score val集合元素val自增/自减分数scoreO(log(N))
zrank key val获取集合元素val的排名(从小到大)O(log(N))
zrevrank key val获取集合元素val的排名(从大到小)O(log(N))
zrange key start end [withscores]获取指定区间分数排名(从小到大)元素O(log(N) + M)
zrevrange key start end [withscores]获取指定区间分数排名(从大到小)元素O(log(N) + M)
zrangebyscore key min max [withscores]获取指定区间分数排名(从小到大)元素O(log(N) + M)
zrevrangebyscore key max min [withscores]获取指定区间分数排名(从大到小)元素O(log(N) + M)
zrangebylex key min max获取字典区间内集合元素O(log(N) + M)
zrem key val val1 ...删除集合元素O(log(N) * M)
zremrangebyscore key min max删除指定区间分数区间元素O(log(N) + M)
zremrangebyrank key start stop删除指定排名rank内元素O(log(N) + M)
zremrangebylex key min max删除字典区间内集合元素O(log(N) * M)
zinterstore new_key n key key1 ...获取集合交集存储到new_key(n 集合个数)O(N K)+O(M log(M))
zunionstore new_key n key key1 ...获取集合并集存储到new_key(n 集合个数)O(N)+O(M log(M))

PS: 更多文章请关注微信公众号:浮话

转:https://www.cnblogs.com/jie-hu/p/10927459.html



推荐阅读
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • com.hazelcast.config.MapConfig.isStatisticsEnabled()方法的使用及代码示例 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 寒假作业解析:第三周 2月12日 第7题
    尽快完成之前的练习任务!每日一练2.1 Problem A Laurenty and Shop 的题目要求是选择两条不同的路线以最小化总的等待时间。简要分析:通过对比不同路线的等待时间,可以找到最优解。此问题可以通过动态规划或贪心算法来解决,具体取决于路线的复杂性和约束条件。 ... [详细]
author-avatar
手机用户2502907463
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有