2.1. redis 简单的使用和说明

Redis 简单描述

Nosql 开源数据库之一 , Key-Value存储结构,

目前支持5种数据类型 string, hash,  list, set , zset(sort set)

使用理由:快,方便,上手简单

    快:

            1. 绝大部分请求是纯粹的内存操作

            2. 采用单线程,避免了不必要的线程上下文切换和竞争条件

            3. redis 是单线程,但不是纯粹的单线程(单线程模型IO多路复用【非阻塞IO】)

                A.IO多路复用(O(n))- select : 当IO发生了,无差别轮训所有流,流越多轮询事件越长

                B.IO多路复用(O(n))- poll:基本同上 select

                C.IO多路复用- epoll(非阻塞IO): 简单理解-基于事件驱动,有操作就处理,没操作就休眠

可能发生的问题:

    1. 缓存db双写一致性问题

    2. 缓存雪崩(批量Key一起并发): 高并发场景下,大量Key集体失效。导致请求直接指向DB,而导致系统部分或全部暂时崩溃

        A. 配置缓存集群和DB集群高可用。

        B. 永不过期,~。~

        C. 不同Key设置不同过期时间,尽量达到平均分布,避免同一时间key的集体失效

        D. 限流降级: 在Key失效后,通过锁(lock,分布式锁)限制 Key对应的 读/写 DB的操作。比如一个Key失效了,在重新获取Key对应的DB数据的时候来一个锁,限制下这个Key对DB的操作,其他操作这个Key的线程稍等。

        E. 缓存预热:正式部署前/在即将大量访问前,先把可能大量访问的数据先缓存到Redis中。

    3. 缓存穿透(Key不存在高并发):利用缓存和数据库都不存在的key,来执行请求,从而绕过缓存每次都吧请求指向DB

        A. 布隆过滤器:先将可能存在的数据存到一个足够打的bitmap中,一个一定不存在的数据会被这个bitmap拦截,从而避免了对db的查询压力。 但是Bloom filter 也会有误判。

        B. 缓存Null对象:set xxKey null(时间一定要比较短,一般几分钟,因为如果是攻击那么会一直新建key。还有就是如果在这几分钟内,如果这个key被业务系统添加了相应的value,那么再次访问还是会返回null,这个时候可利用mq或者其他方式在设置值的时候顺便更新下这个key对应的value就可以了)

    4. 缓存击穿(单个Key存在高并发):key在db中存在,但是缓存已过期,若此时有大量的这个Key的请求...

        A. 互斥锁/同限流降级:当key失效后,先加锁(lock,分布式锁),获取到锁之后在去db抓取数据。

        B. 永不过期,~。~

        C. 异步构建缓存/超时标记: 即将过期的时候主动去更新它

使用场景:

    1. 配合DB做数据缓存,分布式sessino共享

     2. zset 热点数据排序

     3. 分布式锁(可对比zookeeper实现)

     4. 要求不是太苛刻的 延时操作(基于key过期的发布订阅事件实现,需定义配置文件)

     5. 部分业务场景下 可list(zrangebylex) 分页,模糊搜索

     6. 点赞,好友等相互关系的存储(set)

   等等。。。

Redis 安装 

    1. 下载windows版本 https://github.com/MicrosoftArchive/redis/releases

1.1

    随便选哪一个都行,不过个人习惯是直接zip,绿色。

1.2

    解压之后 cmd 打开目录,开启redis服务

1.3

redis-server.exe redis.windows.conf  

redis默认端口 6379

这里指定配置文件,前面先不管配置,后面的话会单独简单说一下配置文件。

1.4

redis-cli.exe -h 127.0.0.1 -p 6379 ,由于是本机默认配置, 所以直接 redis-cli 也可以链接

redis客户端 指定ip 端口 其他或密码等等。链接

基础用法展示

1.5
1.6


Redis 为什么快?

Redis面试题(一): Redis到底是多线程还是单线程?

Redis 6.0 多线程重磅发布!!!

Redis 6.0 多线程IO处理过程详解

走进KeyDB(redis 多线程版本分支)

分布式Redis面试常见问题及知识点归纳

REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案

Redis布隆过滤器

探索C#之布隆过滤器(Bloom filter)

Redis 命令参考(官方)

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容