Redis
文章平均质量分 63
万事无Bug
南昌大学 低调学Java
展开
-
分布式Session问题解决
分布式Session问题前言:在高并发业务中,一台Tomcat服务器已经无法支持足够的并发量,这时我们需要多个Tomcat服务器,而多个Tomcat服务器我们经常配合Nginx使用。问题:由于Nginx使用默认负载均衡策略(轮询),即用户的请求按时间顺序被Nginx转发到不同的后端应用。比如用户在Tomcat A登录,用户Session存放在Tomcat A,可是过一会用户继续操作,此时由于Nginx轮询,将请求交给了Tomcat B,但是Tomcat 并没有用户的Session,那么用户就必须重新原创 2021-08-28 22:36:05 · 235 阅读 · 0 评论 -
Redis企业级解决方案
Redis企业级解决方案一、缓存预热前言:在我们服务器刚开始启动时,服务器缓存空间中是还没有数据的,这时候用户如果访问,是查询不到任何数据的。(比较Redis数据是在内存上,而不是磁盘上的)。概念:缓存预热就是系统启动前,提前将一部分数据(访问量较多的数据)加载到缓存系统,使得用户在系统刚启动时也能查询到被预热的缓存数据。解决方案:日常例行统计数据访问记录,统计访问频度较高的热点数据。利用LRU删除策略,构建数据留存队列将统计结果中的数据分类,根据级别,redis优先加载热度高的数据。二原创 2021-08-14 22:57:39 · 128 阅读 · 0 评论 -
Redis哨兵模式
Redis哨兵模式前言:当我们多台服务器按照主从复制的形式来给使用者提供服务,如果由于某些原因导致主服务器宕机,我们就需要从slave服务器中选出一个服务器替代主服务器,并且要告知其他salve服务器。二者,就是哨兵模式需要解决的问题。哨兵简介:哨兵是一个分布式系统,用于对主从服务器中的每台服务器进行监控,当出现故障时通过投票机制选择新的master,并将所有salve连接到新的master,这个过程也叫做主从切换。哨兵也是一台redis服务器,但不提供任何服务,且哨兵一般设置为单数。哨兵的作用:原创 2021-08-14 20:28:19 · 202 阅读 · 0 评论 -
Redis主从复制
Redis主从复制前言:先了解一下互联网“三高架构”:1、高并发2、高性能3、高可用我们知道,服务器是很容易出现一些事故导致宕机的,如果是单台服务器,那么会极大影响用户体验,所以我们需要多台服务器协作,进而追求更高的可用性,如下:多台服务器连接方案:其中,主服务器(主库)用于客户端写数据,从库用于客户端读数据。主从复制的核心:解决主库和从库数据同步问题,将主库数据及时有效传递给从库!!主从复制作用:1、读写分离:主库负责写,从库负责读,提高服务器负载能力2、负载均衡:基于主从结构原创 2021-08-14 14:27:33 · 72 阅读 · 0 评论 -
Redis高级数据类型
Redis高级数据类型一、Bitmaps1、Bitmaps类型的基础操作获取指定key对应偏移量上的值getbit key offset设置指定key对应偏移量上的bit值,value只能是0或1setbit key offset value2、Bitmap拓展操作对指定多个key按位进行交、并、非、异或操作,并将结果保存在deskkey中bitop op destkey key1 key2 [key3...]/*其中op为:and 交or 并not 非xor 异或*/原创 2021-08-13 20:23:18 · 101 阅读 · 0 评论 -
Redis基础配置
Redis基础配置前言:我们知道,企业级开发中,启动redis服务是会带上其conf配置文件启动的,而这配置文件内就存在许多我们对于启动的服务的一些配置,比如端口号,持久化,删除策略,逐出策略等等的相关配置都在这里面了。服务端配置是否设置服务器以守护进程的方式进行daemonize yes|no绑定主机地址bind 127.0.0.1设置服务端口号port 6379设置数据库数量databases 16日志配置设置服务器指定日志记录级别loglevel debug|varb原创 2021-08-13 16:53:46 · 109 阅读 · 0 评论 -
Redis逐出策略(逐出算法)
Redis逐出策略(逐出算法、淘汰算法)前言:当redis空间中内存不足,或者说空间使用量到达一定值,而我们又要继续往内部增加数据,则我们需要删除部分redis的数据。当需要删除数据时,不会全库扫描,而是会随机从数据库中挑选出特定数目数据,然后按照淘汰算法,淘汰部分数据。影响数据逐出的相关配置:1、最大可使用内存maxmemory占用物理内存的比例,默认为0,表示不限制,生产环境中根据需求,通常设置50%以上!!2、每次选取待删除数据的个数maxmemory-samples选取数据时不会原创 2021-08-13 16:26:10 · 793 阅读 · 0 评论 -
Redis删除策略
Redis删除策略前言:redis中的过期数据并非立马会被删除。redis中,有一个expires空间中,这个空间专门存放时限性数据,它存储着field-value的键值对,field对应数据地址,value对应过期时间的时间戳。而具体何时会将内部过期的数据删除,则通过我们设置的删除策略来决定!!redis的16个数据库中分别有一个expires空间一、定时删除原理:创建一个定时器,当expires空间有数据过期,立马通过地址将对应内存中的数据删除,同时将expires中这条记录删除。优点:原创 2021-08-13 15:30:01 · 493 阅读 · 0 评论 -
Redis事务与锁
Redis事务一、事务的基本操作:1、开启事务:multi作用:设定一个事务的开启位置,此命令执行后,创建一个事务队列,之后的指令都加入到该队列中。2、执行事务exec作用:设置事务的结束位置,同时执行事务,依次执行事务队列中的指令。与multi成对出现,成对使用3、取消事务discard作用:终止当前事务的定义,发生在multi指令之后,exec指令之前二、事务的注意事项:1、如果事务中某条指令书写格式错误,整个事务都不会被执行,包括正确的指令2、如果命令格式正确,但原创 2021-08-12 22:01:05 · 186 阅读 · 0 评论 -
Redis持久化
Redis持久化一、RDB (快照)1、RDB启动方式——save指令命令:save作用:手动执行一次保存操作。save指令执行后,会在日志文件所在的文件下,生成一个rdb后缀的文件,该文件即二进制保存的数据。2、save指令,相关conf配置项dbfilename dump.rdb说明:设置本地数据库文件名,默认值为dump.rdb经验:通常把...原创 2021-08-12 17:39:15 · 55 阅读 · 0 评论 -
Redis快速创建conf配置文件
Redis快速创建conf配置文件熟悉Redis都知道,企业级开发启动Redis时是带上配置文件去启动的。因此对于初学者来说,如何快速按照自己需求创建对应的conf文件尤为重要,这里分享一下自己的操作。1、我们先来看一下默认的conf配置文件长啥样在redis文件下,就存在一个叫redis.conf的文件我们通过下面指令去阅读这个默认的conf文件:cat redis.conf得到的结果如下图,由于太长只截取一小部分,可以看到,大多都是注释内容,因此我们需要简化一下通过下面指令,读取过滤原创 2021-08-11 21:08:39 · 2078 阅读 · 0 评论 -
Redis三种启动方式(Linux)
Redis操作(Linux版)安装说明在使用Redis之前,我们需要先在Linxu环境中下载安装好Redis如下四条指令即可完成Linux上的Redis安装。//下载对应Redis压缩包 wget https://download.redis.io/releases/redis-6.2.5.tar.gz //解压缩 tar xzf redis-6.2.5.tar.gz //进入文件 cd redis-6.2.5 //编译安装 make安装完成之后,redis-server和redi原创 2021-08-11 20:25:05 · 14820 阅读 · 1 评论 -
Jedis初使用
Jedis初使用Jedis是Redis首选的Java客户端开发包,当我们使用Java语言去操作Redis数据库时,我们需要下载Redis的驱动包,Jedis,或者通过maven添加对应依赖即可 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <ver原创 2021-08-09 19:56:24 · 68 阅读 · 0 评论 -
Redis通用指令
1、key基本操作删除指定keydel key检验key是否存在exists key获取key的类型type key设置key的有效期expire key secondspexpire key millisecondsexpireat key timestamp(时间戳格式)pexpireat key milliseconds-timestamp获取key的剩余有效时间ttl key(如果已过期不存在了,则返回-2。如果永久存在,则返回-1)pttl key将key从时效性转换原创 2021-08-09 19:10:36 · 67 阅读 · 0 评论 -
【精】Redis常用数据类型操作及业务场景
1、String(一个key对应一个单独数据,string一般用于存储微博粉丝数,点赞量,转发次数这种类型的数值信息)存储/取出一个数据set key valueget key value存储/取出多个数据mset key valuemget key value获取字符串长度strlen key追加数据到原始新信息后部,如果没有就新建append key value令key对应的数据加1incr key令key对应的数据加incrment(必须是整数)incrby key in原创 2021-08-08 22:38:30 · 243 阅读 · 0 评论