当前位置: 首页 > article >正文

Redis常见数据结构

基本介绍

Redis是一个在内存中存储数据的中间件,可作为数据库,缓存,消息队列等。

特点:

持久化:Redis会把数据存储在内存中,内存的数据是易失的,进程退出和重启都会使内存中的数据丢失,Redis会把数据存储在硬盘上进行备份,重启后Redis会重新加载硬盘中的备份数据,使Redis的内存恢复到重启前的状态。

支持集群:引入多个主机部署多个Redis节点,每个节点可以存储数据的一部分。

高可用:Redis自身支持主从结构,从节点相当于主节点的备份。

快速:Redis数据在内存中,读写的速度远远快于MySQL(数据存储在硬盘中)。Redis的核心功能都是比较简单的逻辑,不支持一些复杂的查询。Redis使用epoll的I/O多路复用的方式(使用一个线程管理多个Socket)。Redis是单线程模型,减少了不必要线程之间的竞争开销。

基本类型:Redis基于键值对存储数据,类似于哈希表,使用<key,value>的形式存储数据,key的类型固定为字符串类型,value可以支持多种类型:String(字符串),hash(哈希),set(集合),zset(有序集合),list(链表)。

全局命令

redis -cli                 本机登录

keys [patter]           查询匹配的key

type key                 查看对应的value类型

ttl key                     查看过期剩余时间

exists key               查看key是否存在

del ke                     删除key

scan cursor(光标 指向当前遍历位置) count(每次获取元素个数)  渐进遍历

数据类型:

String

set key value                 设置value

get key                          获取value

set key value ex            设置key和value,加上过期时间

set key value nx|xx         nx:key不存在时设置值  xx:存在时设置

mset key vslue                 一次设置多个key

mget                                一次获取多个key对应的value

incr key                            对应key的value+1

incrby key                        对应key的value+n

decr key                           对应key的value -1

decrby key                       对应key的value -n

incrbyfloat key                 针对小数的加减

append key value             拼接字符串

getrange key start end      获取指定范围字符串

setrange key offset value   从指定位置开始替换字符

strlen    获取字符串长度

Hash

hset key field value [field vlaue ...]        设置key中的 fleld value

hget key field                                         获取key对应的field

hexists key field                                     判断hash中key对应的field是否存在 

hdel key field [field]                                删除hash对应的key中field字段

hkeys key                                               获取key中的所有faild字段

hvals key                                                获取hash中的所有value

hgetall key                                              获取hash中的所有字段和value

hmget key field [field..]                            一次查询多个field

hset nx key field key                               设置值,不存在设置成功

hincrby key field n                                   对应faild的value加减n

hincrbyfloat key field n                            加减小数

hstrlen key field                                       计算value的字符串长度

hlen key                                                   获取哈希元素个数

List

lpush key element [element...]        左侧插入元素

lpushx key element [element]         存在元素则插入元素,不存在直接返回

rpush key element [element]           右侧插入元素 

rpushx key element [element]         存在元素则插入元素,不存在直接返回

lrange key start stop                        指定范围查看list

lpop key                                           左侧取出元素

rpop key                                           右侧取出元素

lindex key index                                获取从左开始index元素位置

linsert key before | after pivot element        指定位置前后插入元素

llen key                                                        获取元素个数

lrem key count element                                删除指定个数的元素

ltrim key start stop                                        删除指定范围外元素

lset key index element                                 根据下标修改元素

blpop和brpop                                                带有阻塞的插入元素

blpop key[key...] timeout                               带有超时时间

lpush 和 rpop 结合类似数据结构中的栈

lpush 和 lpush 结合类似数据结构中的队列 

Set

sadd key member [member...]  添加元素

smembers key                        获取集合中所有元素

sismember key member          判断元素是否存在集合中

spop key [count]                        随机删除元素

srandmember [count]                随机取出元素               

smove source destination member        将member删除,插入到目标集合中

srem key member [member...]                删除元素一个或多个

sinter key [key...]                                       求集合交集

sinterstore destination key [key...]              计算交集,结果放入集合中

sunion key [key]                                        计算并集

sunionstore destination key[key...]             计算并集,结果放入集合中

sdiff key [key...]                                            计算差集

sdiffstore destination key [key...]                计算差集,结果放入集合中

Zset

zadd key [NX | XX] [GT | LT] [INCR] score member[member...]  添加元素

zrange start stop with scores               使用下标指定查询集合,带有分数

zcard key                                               获取元素个数

zcount key min max                                返回分数在区间min和max之间

zrevrange key min max with scores         按照分数逆序打印

zrevrangebyscore key min max with scores          按照分数逆序打印,带有分数

zpopmax key count                                        删除并返回分数最高的count个元素

bzpopmax key [key...] timeout                        带有超时时间的阻塞删除

zpopmin key count                                        删除有序集合中最小count个元素

bzpopmin key [key...] timeout                        带有超时时间的阻塞删除

zrank key member                                         返回指定元素的排名

zrevrank key member                                     降序返回元素排名

zscore key member                                        更具member查找元素

zrem key member [member]                        删除指定有序集合元素

zremrangebyrank key start stip                     规定下标范围删除

zremrangebyscore key min max                    根据分数区间进行删除

zincrby key increment member                       对分数进行增加,保持集合升序

zinterstore destination numkeys key[key...] [weights weight[weight...]] 

[aggregate <sum | min | max>]        交集

zunionstore destination numkeys key[key...] [weights weight[weight...]]

[aggregate <sum | min | max>]        并集


http://www.kler.cn/a/542901.html

相关文章:

  • 利用邮件合并将Excel的信息转为Word(单个测试用例转Word)
  • Java、Go、Rust、Node.js 的内存占比及优缺点分析
  • ubuntu如何设置停止程序自动更新
  • c语言判断一个文件的文件格式
  • DeepSeek-R1技术革命:用强化学习重塑大语言模型的推理能力
  • spring boot接收请求常用注解
  • 利用Python和SQLite进行数据处理与优化——从数据库操作到高级数据压缩
  • 除了try...catch,还有其他处理异步错误的方法吗?
  • clickhouse replicatedmergetree 恢复
  • 自制游戏——斗罗大陆
  • Unity使用iTextSharp导出PDF-02基础结构及设置中文字体
  • 2月10日QT
  • IGBT的两级关断
  • 线程池-抢票系统性能优化
  • python学opencv|读取图像(五十九)使用cv2.dilate()函数实现图像膨胀处理
  • 【Golang学习之旅】Go + MySQL 数据库操作详解
  • Pandas数据填充(fill)中的那些坑:避免机器学习中的数据泄露
  • react国际化配置react-i18next详解
  • 使用WebUI访问本地Deepseek(Ollama集成Open WebUI)
  • office 365 更新后打不开word问题
  • depcheck检查node.js项目中未使用和缺失依赖的工具
  • 免费在腾讯云Cloud Studio部署DeepSeek-R1大模型
  • encodeURI(),encodeURIComponent()区别
  • AF3 gdt函数解读
  • nginx安装并部署前端项目【包括Linux与Windows系统】
  • 前端性能分析常见内容