![](https://img-blog.csdnimg.cn/2021010617315786.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis
文章平均质量分 77
redis 学习记录
汀风说后端
做一个知识分享者
展开
-
Redis布隆过滤器
相关链接redis+布隆过滤器思路图:https://kdocs.cn/l/sgVaSvSB3Z0s几个小案例①、原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中?解决办法一:将10亿个号码存入数据库中,进行数据库查询,准确性有了,但是速度会比较慢。解决办法二:将10亿号码放入内存中,比如Redis缓存中,这里我们算一下占用内存大小:10亿*8字节=8GB,通过内存查询,准确性和速度都有了,但是大约8gb的内存空间,挺浪费内存空间的。②、原创 2021-01-22 12:19:10 · 296 阅读 · 0 评论 -
Redis 击穿,穿透,雪崩
引入链接【击穿,穿透,雪崩】思维导图:https://kdocs.cn/l/sv1T3ny7wRQl原创 2021-01-22 11:28:57 · 195 阅读 · 0 评论 -
Redis 缓存优缺点,以及(缓存击穿)问题
Redis 缓存,击穿,失效缓存篇1. 使用redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)(2) 支持丰富数据类型,支持string,list,set,sorted set,hash(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除2. redis相比memcached有哪些优势?(1原创 2021-01-21 14:38:37 · 1545 阅读 · 2 评论 -
Redis lua脚本
Redis lua 脚本Lua脚本优势1、减少网络开销:可以将多个请求通过脚本的形式一次发送,减少网络时延和请求次数。2、原子性的操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。3、代码复用:客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本来完成相同的逻辑。4、速度快:见 与其它语言的性能比较, 还有一个 JIT编译器可以显著地提高多数任务的性能; 对于那些仍然对性能不满意的人, 可.原创 2021-01-18 16:19:40 · 298 阅读 · 2 评论 -
Redis 发布订阅
Redis 发布订阅思维导图Redis 发布订阅 - 简单模式:https://kdocs.cn/l/sl5exWLEzq2xRedis 发布订阅 - 复杂模式:https://kdocs.cn/l/sd0RbrsFajZE生活化场景重现原创 2021-01-14 23:11:39 · 335 阅读 · 2 评论 -
Redis 数据类型 Stream
Redis 数据类型 StreamRedis Stream 是 Redis 5.0 版本新增加的数据结构。Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。而 Redis Stream 提供了消息的持久化和主备复制功能原创 2021-01-13 12:51:02 · 640 阅读 · 1 评论 -
Redis 事务
Redis 事务关系型数据中的事务都是原子性的,而redis 的事务是非原子性的。Redis事务相关命令:MULTI :开启事务,redis会将后续的命令逐个放入队列中,然后使用EXEC命令来原子化执行这个命令系列。 EXEC:执行事务中的所有操作命令。 DISCARD:取消事务,放弃执行事务块中的所有命令。 WATCH:监视一个或多个key,如果事务在执行前,这个key(或多个key)被其他命令修改,则事务被中断,不会执行事务中的任何命令。 UNWATCH:取消WATCH对所有key的原创 2021-01-13 12:45:32 · 154 阅读 · 0 评论 -
redis 基于 漏斗算法 实现对 api 的限流
漏斗算法漏桶算法的原理:漏桶有一定的容量,给漏桶注水,当单位时间内注入水量大于流出水量,漏桶内积累的水就会越来越多,直到溢出。就好比大批量请求访问nginx相当于注水,nginx根据配置按照固定速率处理请求当做排水。漏桶容量就好比配置给nginx的队列长度。当漏桶发生溢出,则禁止请求进入,直接返回错误php实现一个简单的漏斗算法/** * [leaky php实现漏桶算法] * @param [type] $contain [int原创 2021-01-12 10:25:59 · 485 阅读 · 0 评论 -
Redis 日志showlog 和 管道pileline
redis日志slowlog-log-slower-than:指定执行时间超过多少微秒(1秒等于1000000微秒) 的命令请求会被记录到日志上slowlog-max-len:指定服务器最多保存多少条慢查询操作SLOWLOG GET(当然也可以用小写,redis客户端对大小写没有太严格的限制)以windows为例查看记录如下为了方便解说,我设置超时时间为0毫秒,日志记录为1条那么记录的中的1)2)3)4)分别表示什么呢?1)表示日志唯一标识符uid2)命令执行时系统原创 2021-01-11 12:41:35 · 631 阅读 · 0 评论 -
Redis 数据类型 Set
Redis 数据类型 Set(集合)Redis 常用命令,思维导图 >>>Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)Set 数据类型的特点:数据不重复 元素没有下标redis的set类型是使用哈希表构造的,因此复杂度是O(1),它支持集合内的增删改查,并且支持多个集合间的交集、并集、差集操作。可以利用这些集合操作,解决原创 2021-01-11 10:47:30 · 351 阅读 · 1 评论 -
随手记:redis 开发注意事项
Redis开发建议1.冷热数据分离,不要将所有数据全部都放到Redis中虽然Redis支持持久化,但是Redis的数据存储全部都是在内存中的,成本昂贵。建议根据业务只将高频热数据存储到Redis中【QPS大于5000】,对于低频冷数据可以使用MySQL/ElasticSearch/MongoDB等基于磁盘的存储方式,不仅节省内存成本,而且数据量小在操作时速度更快、效率更高!2.不同的业务数据要分开存储不要将不相关的业务数据都放到一个Redis实例中,建议新业务申请新的单独实例。因为Re.转载 2021-01-08 14:30:55 · 247 阅读 · 0 评论 -
Redis 数据类型 Zset
Redis 数据类型 Zset(有序列表)Redis 常用命令,思维导图 >>>zset是Redis提供的一个非常特别的数据结构,常用作排行榜等功能,以用户id为value,关注时间或者分数作为score进行排序。与其他数据结构相似,zset也有两种不同的实现,分别是zipList和skipList底层实现zset 存储示意图:每个 value 后面都携带一个分数,然后用作排序跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查原创 2021-01-08 13:52:54 · 3429 阅读 · 0 评论 -
Redis 数据类型 Hash
Redis 数据类型 HashRedis 常用命令,思维导图 >>>底层实现Hash 就是字典,所以明白了这个,接着往下看就没啥问题了Redis hash数据结构 是一个键值对(key-value)集合,它是一个 string 类型的 field 和 value 的映射表一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对table属性是一个数组,数组中的每个元素都是指向dictEntry结构的指针,每个dictEntry结构保存着一个原创 2021-01-08 10:57:16 · 231 阅读 · 0 评论 -
随手记:Redis 部署到linux上面后,本地无法连接
修改redis的配置文件 redis.conf1. bind 设置为 0.0.0.02. protected-mode 设置为no (也就是关闭保护模式)3. daemonize 设置为yes (后台运行) 4. 开放服务器的6379端口firewall-cmd --add-port=6379/tcp --permanent5. 重载入刚刚添加的端口firewall-cmd --reload6. 查看6379端口是否开启firewall-c...原创 2021-01-07 10:40:26 · 724 阅读 · 0 评论 -
Redis 数据类型 List
Redis 数据类型 ListList是一个字符串链表Left、right都可插入元素如果,key不存在,创建链表如果,key存在,链表添加内容如果,链表值全部移除,key也就消失了效率分析链表的头尾元素操作,效率都非常高链表中间元素操作,效率比较低List 底层实现链表是一种常用的数据结构,C 语言内部是没有内置这种数据结构的实现,所以Redis自己构建了链表的实现链表的定义typedef struct listNode{ //前置节..原创 2021-01-06 19:24:26 · 406 阅读 · 0 评论 -
随手记:lnmp 安装完 redis 后无法全局操作
说明redis-server不是全局命令,那么假如到全局即可假设redis安装目录是:/usr/local/redis/bin/redis-cliln -s /usr/local/redis/bin/redis-cli /usr/bin/redis-server则在全局目录(/usr/bin)目标创建一个全局的操作命令,即可使用 redis-server 随时可操作...原创 2021-01-06 19:18:38 · 283 阅读 · 0 评论 -
Redis 数据类型 String
Redis 数据类型 StringRedis主要支持的数据类型有5种:String ,Hash ,List ,Set ,和 Sorted SetStringstring类型在redis中是最常见的类型,value存储最大数据量为512M,可以存放json数据,图像数据等等String 底层实现Redis中,默认以SDS作为自己的字符串表示。只有在一些字符串不可能出现变化的地方使用C字符串。SDS源码定义如下:struct sdshdr{ ...原创 2021-01-06 17:35:39 · 290 阅读 · 0 评论