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

Redis——快速入门

目录

Redis简介

安装配置(Windows)

GUI工具RedisInsight的使用

十大数据类型(5基本5高级)

字符串String

列表List

集合Set(S)

有序集合SortedSet(Z)

哈希Hash(H)

发布订阅模式

消息队列Stream(X)

地理空间Geospatial(GEO)

HyperLogLog(PF)

位图Bitmap(BIT)

位域BitField

事务

数据持久化

主从复制

哨兵模式


Redis简介

  • 官网:Redis 教程_redis教程

  • Remote DIctionary server是一个开源的基于内存的数据存储系统

  • 作用

    • 数据库DB缓存Cache

    • 消息队列MQ

    • ......

    • 最热门NoSQL数据库之一

  • Mysql

    • 基于磁盘IO,读写操作速度与内存相比非常慢

    • Redis:基于内存的数据存储系统

  • 使用方式

    • 命令行界面CLI(Command Line Interface)

    • 应用程序接口API(Application Programming Interface)

    • 图 形用户界面GUI(Graphical User Interface)

安装配置(Windows)

  1. WSL-安装Linux系统-安装Redis

  2. Docker-下载Redis镜像-运行Redis

  3. 安装文件-简单(but比较老的5.0版本)

    • MAC/Linux启动服务:redis-server

    • Windows:redis-server.exe

    • 启动客户端:redis-cli

GUI工具RedisInsight的使用

  • 优点

    • 更方便操作redis

    • 直观看到redis的内存使用情况

    • 自带所有命令的说明文档

    • 本地连接到远程的redis服务

十大数据类型(5基本5高级)

  • redis中的数据以键值对key-value存储

  • 默认使用字符串存储数据,二进制安全

字符串String
  1. 设置:set key value

  2. 取值:get key(区分大小写)

  3. 删除:del key

    • flushall:把数据库里面的键都删除掉(慎用)

  4. 判断是否存在:exists key

  5. 查找:keys+

    • *:所有

    • *me:以me结尾的键

  6. 登录:redis-cli --raw

    • 以原始的形式显示内容

    • 如果设置键值对用了中文,会以二进制的形式输出,所以要--raw

  7. 清空页面:clear

  8. 设置一个带有过期时间(释放内存,用户校对)的键值对

    • TTL key(Time to live):查看过期时间

    • expire key 10:设置过期时间10s

    • setex key 10 value:设置一个带有过期时间的键值对

    • setnx key value:只有当键不存在时才设置键的值,键存在则不做任何动作

列表List
  • 一般用来存储和操作一组有顺序的数据

  1. LPUSH key value1 [value2] :将一个或多个值插入到列表头部

  2. LRANGE key start stop:获取列表指定范围内的元素

    • start:0|stop:-1则可获取从第一个到最后一个

  3. RPOP key:移除并获取列表最后一个元素

    • 后面加个n:表示要删除的列表头部元素个数

  4. LLEN key:获取列表长度

  5. RPOPLPUSH source destination: 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

    • 实现了一个最简单的先进先出队列

  6. LTRIM key start stop:列表只保留指定区间内的元素

集合Set(S)
  • 列表中的元素可以重复

  • set中的元素不可重复,不具有顺序

  1. SADD key member1 [member2]: 向集合添加一个或多个成员

  2. SISMEMBER key member:判断元素是否在集合中

  3. SREM key member1 [member2]:删除集合中一个或多个成员

  4. 集合运算:交集 并集 差集

有序集合SortedSet(Z)
  • 每个元素都会关联一个浮点类型的分数,从而对元素进行从小到大的排序

  • 元素唯一,但分数可重复

  1. ZADD key score1 member1 [score2 member2]: 向有序集合添加一个或多个成员,或者更新已存在成员的分数

  2. ZRANGE key start stop: 通过索引区间返回有序集合成指定区间内的成员

    • 0 -1:所有

    • 后+ [WITHSCORES] :同时显示分数

  3. ZSCORE key member:返回成员的分数值

  4. ZREVRANK key member:反转,有序集成员按分数值递减(从大到小)排序

  5. ZRANK key member:指定成员的索引

  6. ZREM key member :删除成员

哈希Hash(H)
  • 一个string类型的field和value的映射表(键值对集合)

  • 适合存储对象

  1. HSET key field value:将哈希表 key 中的字段 field 的值设为 value

     HSET person name lisi
     HSET person age 100
  2. HGET key field:获取指定字段的值

  3. HGETALL key:获取在哈希表中指定 key 的所有字段和值

  4. HDEL key field1 [field2]: 删除一个或多个哈希表字段

  5. HEXISTS key field:判断某个键值对是否存在

  6. HKEYS key:获取所有哈希表中的字段

  7. HLEN key:获取哈希表中字段的数量

发布订阅模式
  • 发送者(pub)发送消息,订阅者(sub)接收消息

  • 局限性:

    • 消息无法持久化

    • 无法记录历史信息

  1. SUBSCRIBE channel [channel]: 订阅一个或多个频道的信息

  2. PUBLISH channel message: 将信息发送到指定的频道

消息队列Stream(X)
  • 轻量级:解决发布订阅功能的局限性

  1. XADD key id field value:添加一条消息

    • id:*自动生成一个消息的id

  2. XLEN key:查看Stream中消息的数量

  3. XRANGE key start end [COUNT count]:查看消息中的详细内容

    • start-;end+:所有消息

  4. XDEL key id[id...]:删除消息

  5. XTRIM key MAXLEN | MINID [ = | ~ ] threshold [LIMIT count]

    • MAXLEN 0:删除所有消息

  6. XREAD COUNT count BLOCK milliseconds STREAMS key [key...] id [id...]:读取消息

    • COUNT 2:一次读取两条消息

    • BLOCK 1000:没有消息的话就阻塞1000ms(1s)

    • id

      • 0:表示从头开始读取

      • $|>:读取最新消息

  7. XGROUP CREATE key id | $ [MKSTREAM] [ENTRIESREAD entries-read]:创建消费者组

  8. XINFO GOURPS key:查看消费者组的信息

  9. XGROUP CREATECONSUMER key group consumer:添加消费者

  10. XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key id:读取消息(被消费)

地理空间Geospatial(GEO)
  • 存储地理位置信息的数据结构

  • 支持对地理位置进行各种计算操作

  1. GEOADD key [NX|XX] [CH] longitude latitude member:添加一个地理位置信息

     GEOADD city 116.405285 39.904989 beijing
     //经度纬度
  2. GEOPOS key member:获取某个位置的经纬度

  3. GEODIST key member1 member2:计算两个地理位置之间的距离

    • 默认单位为m

    • 想换算成km,则在后面加上km

  4. GEOSEARCH key frommember member | FROMLONGLAT longitude latitude :搜索指定范围内的成员

    • FROMLONGLAT

      • BYRADIUS 300km:圆形范围,半径

      • BYBOX:矩形范围

HyperLogLog(PF)
  • 一种用来做基数(一个集合中不计算重复元素的个数)统计的算法

  • 适合用来做一些对精确度要求不高,而且数据量非常大的统计工作

    • 统计网站的UV

    • 统计某个词的搜索次数

  1. PFADD key element [element ...]:添加指定元素到 HyperLogLog 中

  2. PFCOUNT key [key ...]:查看基数估算值

  3. PFMERGE key sourcekey [sourcekey ...]:合并 HyperLogLog

位图Bitmap(BIT)
  • 字符串类型的扩展:使用String类型来模拟一个Bit数组

  • 支持位运算:与 或 非

  • 应用场景:

    • 记录用户的签到情况

    • 在线状态

    • 有没有点赞

    • 等等

  1. SETBIT key offset value:设置某个偏移量的值

     SETBIT dianzan 0 1
     SETBIT dianzan 1 0
  2. SET key value

     SET dianzan "\xF0"
    • 16进制可以一次性设置多个位的值

  3. GETBIT key offset:获取点赞的每一位值

  4. BITCOUNT key [start end[BYTE|BIT]]:统计数量

  5. BITPOS key bit [start end[BYTE|BIT]]:用来获取某个key里面第一个出现0或者1的位置

位域BitField
  • 将很多小的整数存储到一个较大的位图中

    • 更加高效地使用内存

  • 例子

    • 开发了一个游戏,可以利用位域来记录每个玩家在游戏中的一些关键信息(金钱、等级、是否在线等)

  1. BITFIELD key [GET encoding offset | [OVERFLOW WRAP | SATLEATL]:设置

    • 将get改成set:获取

  2. GET key:查看内存中现在的情况

事务

  • 可以一次执行多个任务

    • 某一个命令执行失败,后面的命令依然执行

  • MULTI:用于开启一个事务

    • 事务开启后,所有的命令都会被放入到一个队列中

  • EXEC:执行事务中的所有命令

  1. MULTI:事务块开始

  2. EXEC

数据持久化

  • redis是一个基于内存的数据库,没有持久化:服务器重启or断电,所有数据都会丢失

  • 两种持久化

    1. RDB(Redis Database)方式

      1. 适合备份

      2. 在指定时间间隔内,将内存中的数据快照写入磁盘。是某一个时间点上数据的完整副本

      3. 可通过配置文件中的save参数来配置

    2. AOF(Append Only File)方式

      1. 追加文件

      2. 执行写命令的时候,不仅会将命令写入到内存中,同时将命令写入到一个追加的AOF文件中

      3. 以日志的形式记录每一个写操作

      4. 开启AOF方式:在配置文件中将append only这个参数的值改为yes

主从复制

  1. 将一台redis服务器(主节点)的数据复制到其他的redis服务器(从节点)

    • 一对多

    • 单向复制

    • 主节点:写操作,异步发送

    • 从节点:读操作,主动更新

  2. 配置主从复制

    • 只需要修改从节点的配置(2种)

    1. 通过命令行执行命令

    2. 通过配置文件来修改

哨兵模式


文章转载自:

http://5Ggp78gi.fdrch.cn
http://pC0vj1cb.fdrch.cn
http://7hGwAj2r.fdrch.cn
http://Jfw7DNaE.fdrch.cn
http://6oF1PF4G.fdrch.cn
http://MCXBSTOu.fdrch.cn
http://nlz9MLSE.fdrch.cn
http://SugUmAPm.fdrch.cn
http://zNQG0yGA.fdrch.cn
http://qJnvm8Jm.fdrch.cn
http://FxE9QPHd.fdrch.cn
http://xKgyVyX1.fdrch.cn
http://MxhtOhTa.fdrch.cn
http://GdDQiSQQ.fdrch.cn
http://65HxFX1Q.fdrch.cn
http://mCfvKSG4.fdrch.cn
http://4tKcrNmt.fdrch.cn
http://up9b8cOn.fdrch.cn
http://KPR7FAhY.fdrch.cn
http://rJQ6rehc.fdrch.cn
http://IRRQxlEu.fdrch.cn
http://zzH4ksbq.fdrch.cn
http://GYOkWHoF.fdrch.cn
http://wcpGrvKa.fdrch.cn
http://JaG3mKxs.fdrch.cn
http://pyv5XV4V.fdrch.cn
http://Jt7BPPCm.fdrch.cn
http://WNSUubrx.fdrch.cn
http://FQ5KXMGa.fdrch.cn
http://QOaUYlys.fdrch.cn
http://www.dtcms.com/a/52604.html

相关文章:

  • Redis 主从复制、哨兵与集群的关系及工作原理详解
  • 关于 QPalette设置按钮背景未显示出来 的解决方法
  • Spring 为什么要有依赖注入
  • Python快捷手册
  • HCIA-IP路由动态-RIP
  • Qt5 C++ QMap使用总结
  • Unity Shader学习日记 part6 基本光照模型
  • CES Asia 2025增设未来办公教育板块,科技变革再掀高潮
  • Trae 是一款由 AI 驱动的 IDE,让编程更加愉悦和高效。国际版集成了 GPT-4 和 Claude 3.5,国内版集成了DeepSeek-r1
  • 【CXX】4.4 其他构建系统
  • 分布式多卡训练(DDP)踩坑
  • 解锁Android RemoteViews:跨进程UI更新的奥秘
  • 软考架构师笔记-存储管理
  • 边缘计算在豪越智慧消防中的应用探索
  • pgsql行列转换
  • 大数据学习(56)-Impala
  • 初次使用 IDE 搭配 Lombok 注解的配置
  • kafka配置
  • 迷你世界脚本文字板接口:Graphics
  • 掌握 Python 高级特性:深入理解迭代器与生成器
  • 城市地质安全专题连载⑧ | 强化工程地质安全保障力度,为工程项目全栈护航
  • 【Aioredis实战总结】如何修改aioredis的最大连接数。
  • 带你从入门到精通——自然语言处理(五. Transformer中的自注意力机制和输入部分)
  • 泛型存储,在需求不稳定的中小型项目里,多用JSON作为存储类型可以带来哪些收益
  • perl初试
  • 网络服务之SSH协议
  • 【计算机视觉】手势识别
  • DeepSeek R1大语言模型实战工作坊02:deepseek发展演进
  • linux nginx 安装后,发现SSL模块未安装,如何处理?
  • AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台