redis实战笔记

2 篇文章 0 订阅
1 篇文章 0 订阅
Redis 是一款高性能的内存数据库,支持多种数据结构如字符串、列表、集合、哈希和有序集合。它能将内存中的键值对数据持久化到硬盘,并提供了事务、过期时间、复制、故障处理等功能。在实际应用中,Redis 被广泛用于实现登录信息存储、购物车管理、网页缓存、数据库行缓存和实时数据分析等场景。
摘要由CSDN通过智能技术生成

Redis 是一 个 速度 非常 快的 非 关系 数据库( non- relational database), 它可 以 存储 键( key) 与 5 种 不同 类型 的 值( value) 之间 的 映射( mapping), 可以 将 存储 在 内存 的 键值 对数 据 持久 化 到 硬盘。

  • k-v
    在 Redis 里面, 字符串 可以 存储 以下 3 种 类型 的 值。 字节 串( byte string)。 整数。 浮点 数。
INCR INCR key- name—— 将 键 存储 的 值 加上 1 

DECR DECR key- name—— 将 键 存储 的 值 减去 1 

INCRBY INCRBY key- name amount—— 将 键 存储 的 值 加上 整数 amount 

DECRBY DECRBY key- name amount—— 将 键 存储 的 值 减去 整数 amount

INCRBYFLOAT INCRBYFLOAT key- name amount—— 将 键 存储 的 值 加上 浮点 数 amount, 这个 命令 在 Redis 2. 6 或 以上 的 版本 可用
  • list
RPUSH RPUSH key- name value [value ...]—— 将 一个 或 多个 值 推入 列表 的 右端 

LPUSH LPUSH key- name value [value ...]—— 将 一个 或 多个 值 推入 列表 的 左端 

RPOP RPOP key- name—— 移 除 并 返回 列表 最 右端 的 元素 

LPOP LPOP key- name—— 移 除 并 返回 列表 最 左端 的 元素 

LINDEX LINDEX key- name offset—— 返回 列表 中 偏移量 为 offset 的 元素 LRANGE 

LRANGE key- name start end—— 返回 列表 从 start 偏移量 到 end 偏移量 范围内 的 所有 元素, 其中 偏移量 为 start 和 偏移量 为 end 的 元素 也会 包含 在被 返回 的 元素 之内 

LTRIM LTRIM key- name start end—— 对列 表 进行 修剪, 只 保留 从 start 偏移量 到 end 偏移量 范围内 的 元素, 其中 偏移量 为 start 和 偏移量 为 end 的 元素 也会 被 保留

BLPOP BLPOP key- name [key- name ...] timeout—— 从 第一个 非 空 列表 中弹 出 位于 最 左端 的 元素, 或者 在 timeout 秒 之内 阻塞 并 等待 可 弹出 的 元素 出现 

BRPOP BRPOP key- name [key- name ...] timeout—— 从 第一个 非 空 列表 中弹 出 位于 最 右端 的 元素, 或者 在 timeout 秒 之内 阻塞 并 等待 可 弹出 的 元素 出现 

RPOPLPUSH RPOPLPUSH source- key dest- key—— 从 source- key 列表 中弹 出 位于 最 右端 的 元素, 然后 将 这个 元素 推入 dest- key 列表 的 最 左端, 并向 用户 返回 这个 元素 

BRPOPLPUSH BRPOPLPUSH source- key dest- key timeout—— 从 source- key 列表 中弹 出 位于 最 右端 的 元素, 然后 将 这个 元素 推入 dest- key 列表 的 最 左端, 并向 用户 返回 这个 元素; 如果 source- key 为 空, 那么 在 timeout 秒 之内 阻塞 并 等待 可 弹出的元素出现

  • set
SADD SADD key- name item [item ...]—— 将 一个 或 多个 元素 添加 到 集合 里面, 并 返回 被 添加 元素 当中 原本 并不 存在 于 集合 里面 的 元素 数量 

SREM SREM key- name item [item ...]—— 从 集合 里面 移 除 一个 或 多个 元素, 并 返回 被 移 除 元素 的 数量 

SISMEMBER SISMEMBER key- name item—— 检查 元素 item 是否 存在 于 集合 key- name 里 

SCARD SCARD key- name—— 返回 集合 包含 的 元素 的 数量 

SMEMBERS SMEMBERS key- name—— 返回 集合 包含 的 所有 元素 

SRANDMEMBER SRANDMEMBER key- name [count]—— 从 集合 里面 随机 地 返回 一个 或 多个 元素。 当 count 为 正数 时, 命令 返回 的 随机 元素 不会 重复; 当 count 为 负数 时, 命令 返回 的 随机 元素 可能 会 出现 重复 

SPOP SPOP key- name—— 随机 地 移 除 集合 中的 一个 元素, 并 返回 被 移 除 的 元素

SMOVE SMOVE source- key dest- key item—— 如果 集合 source- key 包含 元素 item, 那么 从 集合 source- key 里面 移 除 元素 item, 并将 元素 item 添加 到 集合 dest- key 中; 如果 item 被 成功 移 除, 那么 命令 返回 1, 否则 返回 0


SDIFF SDIFF key- name [key- name ...]—— 返回 那些 存 在于 第一个 集合、 但不 存在 于 其他 集合 中的 元素( 数学上 的 差 集 运算) 

SDIFFSTORE SDIFFSTORE dest- key key- name [key- name ...]—— 将那 些 存 在于 第一个 集合 但 并不 存在 于 其他 集合 中的 元素( 数学上 的 差 集 运算) 存储 到 dest- key 键 里面 

SINTER SINTER key- name [key- name ...]—— 返回 那些 同时 存在 于 所有 集合 中的 元素( 数学上 的 交集 运算)

SINTERSTORE SINTERSTORE dest- key key- name [key- name ...]—— 将那 些 同时 存在 于 所有 集合 的 元素( 数学上 的 交集 运算) 存储 到 dest- key 键 里面 

SUNION SUNION key- name [key- name ...]—— 返回 那些 至少 存在 于 一个 集合 中的 元素( 数学上 的 并 集 计算) 

SUNIONSTORE SUNIONSTORE dest- key key- name [key- name ...]—— 将那 些 至少 存在 于 一个 集合 中的 元素( 数学上 的 并 集 计算) 存储 到 dest- key 键 里面
  • hash
HMGET HMGET key- name key [key ...]—— 从 散 列 里面 获取 一个 或 多个 键 的 值 

HMSET HMSET key- name key value [key value ...]—— 为 散 列 里面 的 一个 或 多个 键 设置 值 

HDEL HDEL key- name key [key ...]—— 删除 散 列 里面 的 一个 或 多个 键值 对, 返回 成功 找到 并 删除 的 键值 对 数量 HLEN HLEN key- name—— 返回 散 列 包含 的 键值 对 数量

HEXISTS HEXISTS key- name key—— 检查 给定 键 是否 存 在于 散 列中 

HKEYS HKEYS key- name—— 获取 散 列 包含 的 所有 键 

HVALS HVALS key- name—— 获取 散 列 包含 的 所有 值 

HGETALL HGETALL key- name—— 获取 散 列 包含 的 所有 键值 对 

HINCRBY HINCRBY key- name key increment—— 将 键 key 存储 的 值 加上 整数 increment 

HINCRBYFLOAT HINCRBYFLOAT key- name key increment—— 将 键 key 存储 的 值 加上 浮点 数 increment
  • zset
    和 散 列 存储 着 键 与 值 之间 的 映射 类似, 有序 集合 也 存储 着 成员 与 分值 之间 的 映射, 并且 提供 了 分值 ② 处理 命令, 以及 根据 分值 大小 有序 地 获取( fetch) 或 扫描( scan) 成员 和 分值 的 命令。 本书 曾在 第 1 章 使用 有序 集合 实现 过 基于 发表 时间 排序 的 文章 列表 和 基于 投票 数量 排序 的 文章 列表, 还在 第 2 章 使用 有序 集合 存储 过 cookie 的 过期 时间。
ZADD ZADD key- name score member [score member ...]—— 将 带有 给定 分值 的 成员 添加 到有 序 集合 里面 

ZREM ZREM key- name member [member ...]—— 从 有序 集合 里面 移 除 给定 的 成员, 并 返回 被 移 除 成员 的 数量 

ZCARD ZCARD key- name—— 返回 有序 集合 包含 的 成员 数量 

ZINCRBY ZINCRBY key- name increment member—— 将 member 成员 的 分值 加上 increment

ZCOUNT ZCOUNT key- name min max—— 返回 分值 介于 min 和 max 之间 的 成员 数量 

ZRANK ZRANK key- name member—— 返回 成员 member 在 有序 集合 中的 排名 

ZSCORE ZSCORE key- name member—— 返回 成员 member 的 分值 

ZRANGE ZRANGE key- name start stop [WITHSCORES]—— 返回 有序 集合 中 排名 介于 start 和 stop 之间 的 成员, 如果 给定 了 可选 的 WITHSCORES 选项, 那么 命令 会 将 成员 的 分值 也 一并 返回

ZREVRANK ZREVRANK key- name member—— 返回 有序 集合 里 成员 member 的 排名, 成员 按照 分值 从 大 到 小 排列 

ZREVRANGE ZREVRANGE key- name start stop [WITHSCORES]—— 返回 有序 集合 给定 排名 范围内 的 成员, 成员 按照 分值 从 大 到 小 排列 

ZRANGEBYSCORE ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]—— 返回 有序 集合 中, 分值 介于 min 和 max 之间 的 所有 成员 

ZREVRANGEBYSCORE ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]—— 获取 有序 集合 中 分值 介于 min 和 max 之间 的 所有 成员, 并按 照 分值 从 大 到 小的 顺序 来 返回 它们 

ZREMRANGEBYRANK ZREMRANGEBYRANK key- name start stop—— 移 除 有序 集合 中 排名 介于 start 和 stop 之间 的 所有 成员 

ZREMRANGEBYSCORE ZREMRANGEBYSCORE key- name min max—— 移 除 有序 集合 中 分值 介于 min 和 max 之间 的 所有 成员 

ZINTERSTORE ZINTERSTORE dest- key key- count key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM| MIN| MAX]—— 对 给定 的 有序 集合 执行 类似于 集合 的 交集 运算 

ZUNIONSTORE ZUNIONSTORE dest- key key- count key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|


  • 订阅发布
SUBSCRIBE SUBSCRIBE channel [channel ...]—— 订阅 给定 的 一个 或 多个 频道 

UNSUBSCRIBE UNSUBSCRIBE [channel [channel ...]]—— 退 订 给定 的 一个 或 多个 频道, 如果 执行 时 没有 给定 任何 频道, 那么 退 订 所有 频道 

PUBLISH PUBLISH channel message—— 向 给定 频道 发送 消息 

PSUBSCRIBE PSUBSCRIBE pattern [pattern ...]—— 订阅 与 给定 模式 相 匹配 的 所有 频道 

PUNSUBSCRIBE PUNSUBSCRIBE [pattern [pattern ...]]—— 退 订 给定 的 模式, 如果 执行 时 没有 给定 任何 模式, 那么 退 订 所有 模式
  • sort
SORT SORT source- key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC| DESC] [ALPHA] [STORE dest- key]—— 根据 给定 的 选项, 对 输入 列表、 集合 或者 有序 集合 进行 排序, 然后 返回 或者 存储 排序 的 结果
  • 事务
WATCH、MULTI、EXEC、UNWATCH和DISCARD。
  • 键的过期时间
PERSIST PERSIST key- name—— 移 除 键 的 过期 时间 

TTL TTL key- name—— 查看 给定 键 距离 过期 还有 多少 秒 

EXPIRE EXPIRE key- name seconds—— 让 给定 键 在 指 定的 秒 数 之后 过期 

EXPIREAT EXPIREAT key- name timestamp—— 将 给定 键 的 过期 时间 设置 为 给定 的 UNIX 时间 戳 

PTTL PTTL key- name—— 查看 给定 键 距离 过期 时间 还有 多少 毫秒, 这个 命令 在 Redis 2. 6 或以 上 版本 可用 

PEXPIRE PEXPIRE key- name milliseconds—— 让 给定 键 在 指定 的 毫秒 数 之后 过期, 这个 命令 在 Redis 2. 6 或以 上 版本 可用 

PEXPIREAT PEXPIREAT key- name timestamp- milliseconds—— 将 一个 毫秒 级 精度 的 UNIX 时间 戳 设置 为 给定 键 的 过期 时间, 这个 命令 在 Redis 2. 6 或以 上 版本 可用
  • 两种持久化方式
RDB AOF 
RDB
save 60 1000
AOF
appendonly yes
BGREWRITEAOF
  • 复制
    这里写图片描述

  • 故障处理

无论是 快照 持久 化 还是 AOF 持久 化, 都 提供 了 在 遇到 系统 故障 时 进行 数据 恢复 的 工具。 Redis 提供 了 两个 命令行 程序 redis- check- aof 和 redis- check- dump, 它们 可以 在 系统 故障 发生 之后, 检查 AOF 文件 和 快照 文件 的 状态, 并在 有 需要 的 情况下 对 文件 进行 修复。
  • 分布式锁

实战场景

  • 自动补全联系人
构建 最近 联系人 自动 补 全 列表 通常 需要 对 Redis 执行 3 个 操作。 
第一个 操作 就是 添加 或者 更新 一个 联系人, 让他 成为 最 新的 被 联系 用户, 这个 操作 包含 以下 3 个 步骤。 
(1) 如果 指定 的 联系人 已经 存在 于 最近 联系人 列表 里面, 那么 从 列表 里面 移 除 他。 
(2) 将 指定 的 联系人 添加 到 最近 联系人 列表 的 最 前面。 
(3) 如果 在 添加 操作 完成 之后, 最近 联系人 列表 包含 的 联系人 数量 超过 了 100 个, 那么 对列 表 进行 修剪, 只 保留 位于 列表 前面 的 100 个 联系人。
  • 3s最多请求一次

  • 加入投票大于200的为人们文章50个 ,把50个放在首页。

hash 存文章
zset id time
zset id score
投票 set
  • 登录信息
hash  token  userid
zet token 时间戳
  • 购物车
hash id count
  • 网页缓存
k-v
  • 数据库行

这里写图片描述

  • 网页分析
网站可以从用户的访问、交互和购买行为中收集到有价值的信息。例如,如果我们只想关注那些浏览量最高的页面,那么我们可以尝试修改页面的格局、配色甚至是页面上展示的其他链接
  • 算法,基础必会
排序 二叉树 google等常见算法
  • php
常见语法,生命周期,zend引擎,执行过程,内核原理
  • msqyl
sql语句,数据库设计,索引使用及原理,冗余,统计表,分库分表,主从等
  • redis
常用结构,使用场景,集群,备份恢复等
  • linux
常用命令,负载,shell,awk等
  • nginx
配置,pfm ,fastcgi,等
  • 其他语言 golang python java等
php有一些瓶颈 最好再掌握一门语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值