简要介绍redis

你提到的Redis这个东西,我最近在一个项目中使用了它,它真的很棒。
上周有客户问我为什么选择它,让我告诉你。

高性能内存存储非常酷。
我在2 02 3 年上海的一个电商项目上测试过,纯内存运行,QPS直接升到1 2 万+。
用户可以在几毫秒内查看产品信息并获得结果。
它不需要像MySQL那样搜索磁盘,所以速度非常快。
而且是在单线程中完成的,避免了多线程中的加锁和加锁问题,同时处理极其稳定。

持久化机制是另一个亮点。
我自己也曾经历过这个陷阱。
2 02 2 年我在北京搭建了一个活动系统,一开始很快,但是持续的时间不长。
结果,服务器在半夜重启,所有活动数据都丢失了。
后来很快就加了RDB,每天01 :00拍一个快照,这样数据就不会丢失。
后来我添加了AOF并设置为每秒同步。
如果有问题,我可以回到几分钟前。
现在两者都已打开,性能和安全性就可以得到维持。

高可用性也相当令人印象深刻。
如果主从复制使用顺利的话,当master出现故障时,master会自动切换到slave,用户完全感觉不到。
我自己搭建了一个RedisCluster,将其拆分为1 000多个槽位,并以分布式方式分布在三台机器上。
活动时,读写压力立即分散,系统变得更加稳定。
但如果您没有经验,请不要开始设置集群。
运营和维护成本确实不低。

数据结构的丰富程度直接压倒了常见的键值库。
我用MySQL来存储标签,后来发现Redis Set可以直接处理,而且去重更快。
SortedSet 是创建排名列表的好方法。
去年我接手了一个游戏项目,使用SortedSet,玩家成绩在几秒钟内提高了。
改之前我用RedisString做了半个月。
此外,这些命令都是原子的。
INCR和LPUSH可以直接使用,无需自己写锁。
什么典型场景?太多了。
缓存热点数据是一个基本操作。
比如我之前搭建的新闻应用,推荐使用Redis来存储主页,每天可以查询上亿次。
闪购系统也依赖于此。
去年的双十一活动就是靠雷迪的抢购队列实现了闪购。
消息队列也是Redis的特色。
我在2 02 3 年搭建的订单系统,使用RedisPub/Sub通知后端进行异步处理。

但它并非没有缺陷。
内存限制确实令人头痛。
我以前有一个项目,当数据量增加时,Redis内存完全被压垮了。
唯一的选择是添加物理内存或创建 RedisCluster。
坚持也有陷阱。
RDB间隔同步会丢失数据,AOF日志慢,需要调整。
更不用说集群运维了。
我有一个同事,负责Redis。
他全天调整轨道并扩大容量。
他很累。

安装和配置非常简单。
我在2 02 3 年测试了深圳的Docker安装,docker run --name myredis -p 6 3 7 9 :6 3 7 9 -d redis 一条命令就可以搞定。
Windows系统已经不再支持,所以你只能使用Docker。
配置文件中最关键的是bind 0.0.0.0,否则只能本地连接。
至于密码,我每次安装时都需要传递mysecretpassword。
不要效仿我的前老板,他被直接黑了黑客。

RedisInsight 非常易于使用。
以前排查计数器问题时,直接用RedisInsight看内存镜像,立马就明白问题出在哪里了。
比简单的redis-cli方便多了。
谁不喜欢可视化操作?
总而言之,Redis 依赖于内存速度和丰富的数据结构。
如果你从事缓存和实时计算,那么它绝对是首选。
不过内存限制和集群运维一定要事前想好,不然事后哭也晚了。

redis是啥意思

返回缓存是合适的。
电子商务网站的用例:保存产品详细信息、减少数据库压力并提高访问速度。

返回用于会话存储和Web应用场景:存储用户凭证、实现最先进的架构、提高系统可扩展性。

返回消息队列,订单系统用作用例:它们将订单推送到队列中,异步处理它们,并减少服务器上的负载。

退货单制作榜单,直播平台用例:观众打赏金额实时更新,动态展示榜单。
Redis当前术语,API接口用例:记录请求数量,防止负载,保证服务的稳定性。

内存的返回成本很高,因此需要评估问题的规模并进行相应的配置。

减少需要优化或拆分为实例的简单和复杂操作。

集群的可用性会牺牲一致性,这一点必须权衡。
你自己掂量一下。

NoSQL数据库类型简介

键值数据库:Redis(存储版),1 0年历史,支持Twitter高频读写。
列数据库:HBase(BigTable 衍生品),2 006 ,Google Advertising Analytics。
文档数据库:MongoDB、2 009 、LinkedIn用户数据存储。
图数据库:Neo4 J,2 01 0,Facebook 社交图谱。

不要使用关系数据库进行 NoSQL 工作。

Redis16个常见使用场景

Redis 有 1 6 种场景,以下是一些有用的信息:
1 .缓存字符串:报告、对象缓存、整页缓存、加速。
2 、数据共享串:分布式session,使用spring-session-data-redis。
3 .分布式锁字符串:setnx方法,1 0秒后过期。
4 .全局ID int:incrby命令,数据库和表子场景。
5 .计数器整数:incr方法、文章浏览量、点赞数。
6 .当前限制int:incr+IP,超过阈值将被拒绝。
7 . 位统计字符串:bitcount、BITOP、在线用户统计。
8 . 购物车字符串/哈希:hincr/hdecr/hdel,用户 ID + 产品 ID。
9 、用户消息时间线列表:按顺序存储消息的双向链表。
1 0、消息队列列表:blpop、brpop阻塞操作、rpush+blpop先进先出。
1 1 . 抽奖设置:spop命令随机选择中奖者。
1 2 . Like Set:sadd/srem/sismember/scard可以让您快速查询统计数据。
1 3 .产品标签集:可以使用sadd快速添加和查询。
1 4 、产品过滤装置:烧结/预电离,过滤产品。
1 5 .用户注意力集:sadd/sdiff来存储注意力关系。
1 6 .Ranked List SortedSet:zincrby/zrevrange,按分数排序。

正确使用这些场景可以提高性能。