Redis 总结

Redis

Redis 介绍

远程字典服务
性能几乎最快的 非关系型(轻量级)数据库

  • Redis 是 Key-Value 型 NoSQL 数据库
  • Redis 将 数据存储在内存中,同时也能 持久化到磁盘
  • Redis 常用于 缓存,利用内存的高效 提高程序的 处理速度。
  • Redis 是一个 内存中的数据结构存储系统;可用作 数据库,缓存、消息代理 中间件

默认端口是 ==6379 ==

特点:
  1. 速度快
  2. 广泛的语言支持
  3. 持久化
  4. 多种数据结构
  5. 主从复制
  6. 分布式 与 高可用
使用场景:
  • 说法一:
    • Redis 非常适合处理 小而热 的数据,而且是 读写 都比较频繁的热数据。
  • 说法二:
    • 不要在redis中频繁更新数据
    • 跟RDB持久化没关系,跟AOF持久化有关系。RDB持久化是在指定的时间间隔内,把内存中的数据写入到磁盘中,然后指定的目录下生成一个rdb文件。
    • AOF持久化会记录每次写命令然后生成aof文件。每秒几百次更新,aof都会记录每次set的命令,会导致aof文件越来越大。
注意事项:

https://blog.csdn.net/weixin_45178729/article/details/124082809

  • 冷热数据分离,不要将所有数据全部都放到 Redis 中
  • 不同的业务数据要分开存储
  • 存储的Key一定要设置超时时间
  • 对于必须要存储的大文本【+超过500字节】数据一定要压缩后存储
  • 线上Redis禁止使用Keys正则匹配操作
    • 如果有类似需求,请使用scan命令代替!
  • 可靠的消息队列服务
  • 谨慎全量操作Hash、Set等集合结构
  • 根据业务场景合理使用不同的数据结构类型
  • 命名规范
    • 除了默认的0号库以外,其它的都需要通过一个额外请求才能使用。所以用前缀作为命名空间可能会更明智一点。
  • 线上禁止使用monitor命令
  • 禁止大string
  • redis容量
    • 单实例的内存大小不建议过大,建议在10~20GB以内。
    • redis实例包含的键个数建议控制在1kw内,单实例键个数过大,可能导致过期键的回收不及时。
  • 可靠性
    • 需要定时监控redis的健康情况:使用各种redis健康监控工具,实在不行可以定时返回redis 的 info信息。
    • 客户端连接尽量使用连接池(长链接和自动重连)

Redis 安装与启动

Linux 系统安装:

Redis 一般都用于 linux 系统

  1. 进入 Redis 官网,进入下载
  2. 找到要下载的版本,可以直接 download 或 在 Linux 里 使用 wget 安装。
wget https://download.redis.io/releases/redis-6.2.10.tar.gz
tar xzf redis-6.2.10.tar.gz
cd redis-6.2.10/
make

重要文件:

  • redis.conf:配置信息
  • src/redis-server:启动命令
  • src/redis-cli:连接客户端
    启动 Redis:
  • 进入 Redis 目录下,输入命令:./src/redis-server redis.conf

Windows 系统安装:

微软重构了一款在 windows 开发的 Redis
网站:https://github.com/MicrosoftArchive/redis

但是已经停止更新很久了(上一次是 2016),因此不能放在线上服务器,只能用于自己学习练习等。

  1. 解压文件
  2. 打开 命令控制符界面,转到 解压的路径下
  3. 输入命令:redis-server redis.windows.conf
    a. 当出现:The server is now ready to accept connections on port 6379 ,则说明启动成功了

Linux 操作 Redis

  • 启动:./src/redis-server redis.conf

    • 默认为在前台运行,按 Ctrl + C 或 关闭当前终端 退出
  • 强制关闭(不推荐):kill -9 进程ID

    • 首先可以使用 netstat -tulpn | grep 6379 命令查看 进程ID
  • 更建议在 Redis客户端 中进行关闭:./src/redis-cli shutdown

  • 连接(进入) Redis 客户端:./src/redis-cli

    • 后可 继续跟命令,代表在客户端中执行此命令
      请添加图片描述
redis.conf 的常用基本配置

使用 vim redis.conf 进行更改配置,使用 行号gg 或 ==/word ==(n) 来快捷定位

  • daemonize:是否启用后台运行(守护进程方式),默认 no 如:daemonize yes
  • port: 设置端口号默认6379 如:port 6379
  • logfile: 设置日志文件 如:logfile “.log日志文件”
    • 此时便会生成指定日志文件
  • databases: 设置 redis 数据库的总量 如:databases 255
    • Redis 数据库用编号区分,默认从 0 开始
  • dir: 设置数据文件 存储目录,默认 ./ 如:dir 数据文件目录
    • Redis 全量备份文件:dump.rdb :在 内存中对Redis数据 进行的任何操作都会同步的在硬盘中利用 .rdb 文件进行全量保存。以防止 宕机 不会造成数据丢失
  • requirepass:设置客户端密码 如:requirepass 123456
  • protected-mode:是否开启保护模式,默认为 yes
    • 保护模式下 只允许指定的 ip 地址才能访问 Redis 服务。
  • bind:设定指定的 ip 才能访问此 Redis 服务。默认为 127.0.0.1
    • bind 0.0.0.0:代表所有 ip 的主机都能访问。

Redis 客户端

连接(进入) Redis 客户端
  • ./src/redis-cli [客户端命令]
    • [客户端命令],代表在客户端中执行此命令
      请添加图片描述

    • -p:指定端口号;默认为 6379,当更改了端口号时需要指定端口。

常用 通用 命令:
  • ping:检查服务,若返回 PONG 则代表客户端正常启动
  • exit:退出 客户端
  • shutdown:关闭 Redis 服务
  • select dbID:选择数据库
    • Redis 数据库用编号区分,默认当前是 0 号,默认有 16 个数据库(0~15),在 redis.conf 中 修改数量
  • auth 密码:客户端密码 登录验证
    • 若 设置了密码而没有登录验证,则任何命令都会报错 (error) NOAUTH Authentication required.
  • clear:清空客户端屏幕。
  • set key value:增加 键值对。
    • 若已存在 key,则 覆盖 value
    • mset:批量增加
  • get key:查询指定 key 的 value。
    • mget:批量查询
  • keys pattern:根据 通配符表达式 查询 key。
    • keys *:查询所有 key
  • dbsize:返回 key 的总数。
    • 底层通过一个 计数器 来记录所有数据的总量
  • exists key:检查指定 key 是否存在。
    • 1 存在,0 不存在
  • del key[ key2]:删除指定 key。多个用空格分隔。
    • 返回删除 的数量
  • expire key seconds:设置指定 key 在 多少秒后 过期(存活时间)。
    • expire hello 20;设置 key=hello 20秒后过期
  • ttl key:查看 key 的过期剩余时间。

Redis 数据类型

String:字符串 类型;可以为数字(Integer)
  • 最大 512mb(兆),建议单个 字符串 不超过 100kb,否则在内存中提取的效率会大大降低。
  • {incr | decr} key:对数字进行 自增 / 自减 1。
  • {incrby | decrby} key step:对数字进行 自增 / 自减 指定步长值。
Hash:Hash 类型;键值对
  • 用于存储 结构化数据,例如 一个实体对象。(多个 对象常用 :编号 分隔 emp:1)

  • hset key hashKey hashValue:增加 Hash 类型的 数据,可批量。 hset emp:1 name cjx age 20

    • hmset:批量 增加。现在 hset 已具备此功能了。
  • hget key hashKey:获取 指定 key 的 hashkey 的 value。 hget emp:1 name

    • hmset:批量 查询
  • hgetall key:查询指定 key 的 所有键值对
    请添加图片描述

  • hdel key hashKey:删除 指定 key 的 hashKey,可批量。

  • hexists key hashKey:检查 是否存在 指定 key 的 hashKey

  • hlen key:获取指定 key 的长度

List:列表 类型;数组

https://www.runoob.com/redis/redis-lists.html

  • List 列表就是一系列 字符串的“数组”,按插入顺序排序。
  • List 列表最大长度为 (2^32)-1,可以包含 40亿 个元素。
  • 增加:
    • rpush key v[ v2]:右侧插入
    • lpush key v[ v2]:左侧插入
  • 删除:
    • rpop key[ count]:弹出 右侧 count 个元素,默认 count 为 1
    • lpop key[ count]:弹出 左侧 count 个元素,默认 count 为 1
  • lrange key start stop:查询 指定 列表中 下标从 start 开始往后 stop 位的元素。
  • stop: -1 代表 最后一个元素,以此类推
  • lindex key index:查询指定下标的值。
  • lset key index newValue:修改指定下标 的值。
  • llen key:查询列表长度
  • lrem key count value:删除 count 数量个值为 value 的元素。
Set:集合 类型;字符串的无序集合,集合成员是唯一的

https://zhuanlan.zhihu.com/p/395039882

  • 最大长度为 (2^32)-1
  • sadd key v[ v]:增加 Set 类型 的 数据,可批量。
    • 对 一个Set 插入了 已有 的元素,(Integer) 0
  • smembers key:查询 指定 key 的所有数据。
  • srem key v[ v2]:删除元素,可批量
  • scard key:统计 指定 集合 下有多少个 元素
  • sismember key member:判断 member 是否为 key 集合中的元素。
  • smismember key member [member …]:判断给定的多个 member 是否为 key 集合中的元素。
    • 返回 n 行,对于每一个 member 元素,存在集合key中返回 1 表示,否则返回 0 。
  • spop key [count]:从集合中随机移除 count 个元素,并返回该元素值。
    • count 未指定时为 1。
    • 如果只想返回元素但不移除,使用 srandmember 命令。
  • sinter key[ key2[ key3]]:查询 交集 。
  • sunion key[ key2[ key3]]:查询 并集 。
  • sdiff key[ key2[ key3]]:查询 差集 ,key 中有而 key2 中没有的。
    • 小技巧:在第一个 key 中排除掉 交集,剩下的就是差集。
      • 若有 三个及以上,则:前两个求差集,再用结果与下一个求差集。
Zset:有序集合 类型;字符串的有序集合,集合成员是唯一的

http://c.biancheng.net/redis_command/zset/

  • 每一个元素都会关联一个 double 类型的分数,Redis 正是通过分数来为集合中的成员进行 从大到小的排序。
    • 分数可以重复
  • zadd key score v[ score2 v2]:添加,每个元素都有一个 double 类型的分数;可批量。
  • zrange key start stop:查询 集合中 下标从 start 开始往后 stop 位的元素。
    • stop: -1 代表 最后一个元素,以此类推
    • withscores:在每一个元素的下方展示分数。
  • zrangebyscore key sStart sEnd:查询 集合中 分数在[sStart, sEnd] 之间的所有元素
    • withscores:在每一个元素的下方展示分数。
  • zscore key value:获取 key 下面的 value 的分数
  • zrem key v[ v2]:删除元素,可批量
  • zcard key:统计 指定 集合 下有多少个 元素
  • zcount key sStart sEnd:统计 集合中 分数在[sStart, sEnd] 之间的元素个数。
  • zrank key value:获取 key 下面的 value 的下标
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TryMyBestTo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值