redis端口号_redis端口号是多少
server和client 运行后出现提示,改过端口号还是不行,要怎么办?
SYN_RECEIVED你可以启动两个eclipse分别运行这两个程序(两次双击eclipse图标就可以,不过第二个要创建一个新的工作区workspace)。
redis端口号_redis端口号是多少
redis端口号_redis端口号是多少
解决方法
1.首先,我们要把防火墙禁用掉
2.安装redis时,Redis 的配置文件默认是绑定本地ip的,所以我们要去系统中找到bind 127.0.0.1,然后把它注释掉,那么就可以连接上了
3.下面是redis.conf配置文件,看到bind 127.0.0.1吗?就是他,搞我们连接不上,注释掉吧 # Redis configuration file example
# Note on units: when memory size is needed, it is sible to specifiy
# it in the usual form of 1k 5GB 4M and so forth:
## 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 10241024 bytes
# 1g => 1000000000 bytes
# 1gb => 102410241024 bytes
## units are case insensitive so 1GB 1Gb 1gB are all the same. # By default Redis does not run as a daemon. Use yes if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes # When running daemonized, Redis writes a pid file in /var/run/redis.pid by
# default. You can specify a custom pid file location here.
pidfile /var/run/redis/redis-server.pid # Accept co前面提到了 Redis 的发布者/者机制,那就不得不提一下哨兵集群的组成方式,因为它也用到了这个技术。nnections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379 # If you want you can bind a single intece, if the bind option is not
# specified all the inteces will listen for incoming connections.
#bind 127.0.0.1 # Specify the path for the unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
## unixsocket /var/run/redis/redis.so//super.setValue(((RedisOperations) value).opsForValue());就这一行代码 依靠一个editorck
4.注释后,再重启redis sudo /etc/init.d/redis-server restart (不重启,你修改的配置不会生效)
我再运行代码
结果,输入出ing 了..........ing
端口15672是TCP还是UDP?
@Resource(name = "redisTemplate")端口15672是TC当这个哨兵的赞同票数达到哨兵配置文件中的 quorum 配置项设定的值后,这时主节点就会被该哨兵标记为「客观下线」。P端口。
以下是一些常见的端口号对应表:
HTTP协议(HTTP):80
FTP协议(文件传输协议):21
S客户端和应该分别启动两个jvm,eclipse一个时刻只能运行一个程序SH协议(安全外壳协议):22
Telnet协议(远程登录协议):23
SNMP协议(简单网络管理协议):161
RDP协议(远程桌面协议):3389
VPN协议(虚拟专用网络协议):17/18
MySQL数据库服务:3306
PostgreSQL数据库服务:5432
MongoDB数据库服务:27017
Redis缓存服务:6379
Apache Web:80/443
这些只是一小部分常见的端口号,实际上还有很多其他的端口号。在网络通信中,不同的端口号对应着不同的服务或应用程序,因此了解这些端口号的含义对于网络管理和安全非常重要。
redis.pid文件丢失什么原因,改怎么解决
什么是 ID#在空闲时检查有效性, 默认false 号?每个从节点都有一个编号,这个编号就是 ID 号,是用来标识从节点的。//端口号端口15672是TCP还是UDP?
因此,通常我们至少会配置 3 个哨兵节点。这时,如果哨兵集群中有个哨兵挂掉了,那么还剩下两个个哨兵,如果这个哨兵想要成为 Leader,这时还是有机会达到 2 票的,所以还是可以选举成功的,不会导致无法进行主从节点切换。端口15672是TCP端口。
所以,我们首先要把网络状态不好的从节点给过滤掉。首先把已经下线的从节点过滤掉,然后把以往网络连接状态不好的从节点也给过滤掉。以下是一些常见的端口号对应表:
redisTemplate.setKeySerializer(new StringRedisSerializer());HTTP协议(HTTP):80
FTP协议(文件传输协议):21
SSH协议(安全外壳协议):22
Telnet协议(远程登录协议):23
SNMP协议(简单网络管理协议):161
RDP协议(远程桌面协议):3389
VPN协议(虚拟专用网络协议):17/18
MySQL数据库服务:3306
PostgreSQL数据库服务:5432
MongoDB数据库服务:27017
Redis缓存服务:6379
Apache Web:80/443
这些只是一小部分常见的端口号,实际上还有很多其他的端口号。在网络通信中,不同的端口号对应着不同的服务或应用程序,因此了解这些端口号的含义对于网络管理和安全非常重要。
到底如何在spring中使用redis
如果在第二轮考察中,发现有两个从节点优先级和进度都是一样的,那么就会进行第三轮考察,比较两个从节点的 ID 号,ID 号小的从节点胜出。1. Redis使用场景
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
我们都知道,在日常的应用中,数据库瓶颈是最容易出现的。数据量太大和频繁的查询,由于磁盘IO性能的局限性,导致项目的性能越来越低。
这时候,基于内存的缓存框架,就能解决我们很多问题。例如Memcache,Redis等。将一些频繁使用的数据放入缓存读取,大大降低了数据库的负担。提升了系统的性能。
其实,对于hibernate的二级缓存,是同样的道理。利用内存高速的读写速度,来解决硬盘的瓶颈。
首先,我们需要引入基本的jar包。men中的基本引用如下:
然后,在applicationContext中配置如下:
p:pool-config-ref="poolConfig" />
对于hibernate的配置可知,个poolconfig是对连接2. 配置使用redis池的配置。包括连接数,队列数,存活时间,等待时间等等,还有一些额外的配置,请直接点击JedisPoolConfig类源码,进行查看。
这些配置的意思如果不明白的话,一定要去把线程池好好学习下。
一个配置特别重要。这个类似于spring提供的HibernateDaoSupport。
接下来,全部讲解都将围绕这个类展开。
3. RedisTemplate的使用
这个类作为一个模版类,提供了很多快速使用redis的api,而不需要自己来维护连接,事务。
最初的时候,我创建的BaseRedisDao是继承自这个类的。继承的好处是我的每个Dao中,都可以自由的控制序列化器,自由的控制自己是否需要事务,这个先不需要了解,跟着我目前的这种配置方法来即可。
template提供了一系列的operation,比如valueOperation,HashOperation,ListOperation,SetOperation等,用来作不同数据类型的Redis。
并且,RedisTemplate还提供了对应的OperationsEditor,用来通过RedisTemplate直接注入对应的Operation。我们暂时不讲这个。
对于下面的test1方法,我们暂时不用考虑,先了解通过RedisTemplate来使用connection作Redis。
Test代码如下:
package cn.test.spjedis;
import jax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.redis2.dao.IncrDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class TestRedis {
private RedisTemplate
//至于这个为什么可以注入。需要参考AbstractBeanFactory doGetBean
private ValueOperations
public void testSet(){
template.execute(new RedisCallback
@Override
public Boolean PS:quorum 的值一般设置为哨兵个数的二分之一加1,例如 3 个哨兵就设置 2。doInRedis(RedisConnection connection) throws DataAccessException {
byte [] key = "tempkey".getBytes();
byte[] value = "tempvalue".getBytes();
connection.set(key, value);
return true;
}});
}public void testSet1(){
vOps.set("tempkey", "tempvalue");
}@Autowired
private IncrDao incr;
@Test
public void addLink() {
System.out.println(incr.incr(13));
System.out.println(incr.get(13));
}}
这个是对String类型插入的两个测试。test方法中,使用了模版类提交回调(RedisCallBack)的方法来使用jedis connection作数据。这一部分,有没有似曾相识呢?
HibernateTemplate的HibernateCallback,以及Hibernate Session类中的doWork以及doReturningWork方法,都是使用了这样的机制,方便对于连接或者session的统一管理。
public int excuteHqlUpdate(final String hql,final Object ...params){
return getHibernateTemplate().executeWithNativeSession(new HibernateCallback
@Override
@SuppressWarnings("unchecked")
public Integer doInHibernate(Session session) throws HibernateException {
if (params != null) {
for (int i = 0; i < params.length; i++) {
queryObject.setParameter(i, params[i]);
}}
return queryObject.executeUpdate();
}});
}
美团二面:为什么Redis会有哨兵?
// 在空闲时检查有效性, 默认false话不多说,发车发车!
1.Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonizeno2.当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile/var/run/redis.pid3.指定Redis端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女AlessiaMerz的名字port63794.绑定的主机地址bind127.0.0.15.当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能timeout3006.指定日志记录级别,Redis总共支持四个级别:debug、verbose、not、warning,默认为verboselogllverbose7.日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/nulllogfilestdout8.设置数据库的数量,默认数据库为0,可以使用SELECT命令在连接上指定数据库iddatabases169.指定在多长时间内,有多少次更新作,就将数据同步到数据文件,可以多个条件配合seRedis默认配置文件中提供了三个条件:se9001se30010se6010000分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。10.指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大rdbcompressionyes11.指定本地数据库文件名,默认值为dump.rdbdbfilenamedump.rdb12.指定本地数据库存放目录dir./13.设置当本机为sl服务时,设置服务的IP地址及端口,在Redis启动时,它会自动从进行数据同步sleof14.当服务设置了密码保护时,sl服务连接的密码auth15.设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH命令提供密码,默认关闭requirepassfoobared16.设置同一时间客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的文件描述符数,如果设置maxclients0,表示不作限制。提纲
在 Redis 的主从架构中,由于主从模式是读写分离的,如果主节点()挂了,那么将没有主节点来服务客户端的写作请求,也没有主节点给从节点(sle)进行数据同步了。
这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节点」,然后让其他从节点指向新的主节点,同时还需要通知上游那些连接 Redis 主节点的客户端,将其配置中的主节点 IP 地址更新为「新主节点」的 IP 地址。
这样也不太“智能”了,要是有一个节点能「主节点」的状态,当发现主节点挂了 ,它自动将一个「从节点」切换为「主节点」的话,那么可以节省我们很多事情啊!
Redis 在 2.8 版本以后提供的 哨兵(Sentinel)机制 ,它的作用是实现 主从节点故障转移 。它会监测主节点是否存活,如果发现主节点挂了,它就会选举一个从节点切换为主节点,并且把新主节点的相关信息通知给从节点和客户端。
哨兵其实是一个运行在特殊模式下的 Redis 进程,所以它也是一个节点。从“哨兵”这个名字也可以看得出来,它相当于是“观察者节点”,观察的对象是主从节点。
当然,它不仅仅是观察那么简单,在它观察到有异常的状况下,会做出一些“动作”,来修复异常状态。
哨兵节点主要负责三件事情: 、选主、通知 。
哨兵的职责
所以,我们重点要学习这三件事情:
哨兵会周期性地给所有主从节点发送 PING 命令,当主从节点收到 PING 命令后,会发送一个响应命令给哨兵,这样就可以判断它们是否在正常运行。
哨兵主从节点
如果主节点或者从节点没有在规定的时间内响应哨兵的 PING 命令,哨兵就会将它们标记为「 主观下线 」。这个「规定的时间」是配置项 down-after-milliseconds 参数设定的,单位是毫秒。
是的没错,客观下线只适用于主节点。
之所以针对「主节点」设计「主观下线」和「客观下线」两个状态,是因为有可能「主节点」其实并没有故障,可能只是因为主节点的系统压力比较大或者网络发送了拥塞,导致主节点没有在规定时间内响应哨兵的 PING 命令。
所以,为了减少误判的情况,哨兵在部署的时候不会只部署一个节点,而是用多个节点部署成 哨兵集群 ( 最少需要三台机器来部署哨兵集群 ), 通过多个哨兵节点一起判断,就可以就可以避免单个哨兵因为自身网络状况不好,而误判主节点下线的情况 。同时,多个哨兵的网络同时不稳定的概率较小,由它们一起做决策,误判率也能降低。
具体是怎么判定主节点为「客观下线」的呢?
当一个哨兵判断主节点为「主观下线」后,就会向其他哨兵发起命令,其他哨兵收到这个命令后,就会根据自身和主节点的网络状况,做出投票或者拒绝投票的响应。
例如,现在有 3 个哨兵,quorum 配置的是 2,那么一个哨兵需要 2 张票,就可以标记主节点为“客观下线”了。这 2 张票包括哨兵自己的一张票和另外两个哨兵的票。
哨兵判断完主节点客观下线后,哨兵就要开始在多个「从节点」中,选出一个从节点来做新主节点。
那么多「从节点」,到底选择哪个从节点作为新主节点的?
随机的方式好吗?随机的方式,实现起来很简单,但是如果选到一个网络状态不好的从节点作为新主节点,那么可能在将来不久又要主从故障迁移。
怎么判断从节点之前的网络连接状态不好呢?
Redis 有个叫 down-after-milliseconds 10 配置项,其down-after-milliseconds 是主从节点断连的连接超时时间。如果在 down-after-milliseconds 毫秒内,主从节点都没有通过网络联系上,我们就可以认为主从节点断连了。如果发生断连的次数超过了 10 次,就说明这个从节点的网络状况不好,不适合作为新主节点。
至此,我们就把网络状态不好的从节点过滤掉了,接下来要对所有从节点进行三轮考察: 优先级、进度、ID 号 。在进行每一轮考察的时候,哪个从节点优先胜出,就选择其作为新主节点。
Redis 有个叫 sle-priority 配置项,可以给从节点设置优先级。
每一台从节点的配置不一定是相同的,我们可以根据性能配置来设置从节点的优先级。
比如,如果 「 A 从节点」的物理内存是所有从节点中的, 那么我们可以把「 A 从节点」的优先级设置成。这样当哨兵进行轮考虑的时候,优先级的 A 从节点就会优先胜出,于是就会成为新主节点。
如果在轮考察中,发现优先级的从节点有两个,那么就会进行第二轮考察,比较两个从节点哪个进度。
什么是进度?主从架构中,主节点会将写作同步给从节点,在这个过程中,主节点会用 _repl_offset 记录当前的写作在 repl_backlog_buffer 中的位置,而从节点会用 sle_repl_offset 这个值记录当前的进度。
如果某个从节点的 sle_repl_offset 最接近 _repl_offset,说明它的进度是最靠前的,于是就可以将它选为新主节点。
到这里,选主的事情终于结束了。简单给大家总结下:
前面说过,为了更加“客观”的判断主节点故障了,一般不会只由单个哨兵的检测结果来判断,而是多个哨兵一起判断,这样可以减少误判概率,所以哨兵是以哨兵集群的方式存在的。
那在选定了即将作为主节点的从节后,由哨兵集群中的哪个节点进行主从故障转移呢?
所以这时候,还需要在哨兵集群中选出一个 leeder,让 Leader 来执行主从切换。
选举 leeder 的过程其实是一个投票的过程,在投票开始前,肯定得有个「候选者」。
哪个哨兵节点判断主节点为「客观下线」,这个哨兵节点就是候选者,所谓的候选者就是想当 Leader 的哨兵。
举个例子,假设有三个哨兵。当哨兵 A 先判断到主节点「主观下线后」,就会给其他实例发送 is--down-by-addr 命令。接着,其他哨兵会根据自己和主节点的网络连接情况,做出投票或者拒绝投票的响应。
当哨兵 A 收到票数达到哨兵配置文件中的 quorum 配置项设定的值后,就会将主节点标记为「客观下线」,此时的哨兵 A 就是一个Leader 候选者。
候选者会向其他哨兵发送命令,表明希望成为 Leader 来执行主从切换,并让所有其他哨兵对它进行投票。
每个哨兵只有一次投票机会,如果用完后就不能参与投票了,可以投给自己或投给别人,但是只有候选者才能把票投给自己。
那么在投票过程中,任何一个「候选者」,要满足两个条件:
举个例子,假设哨兵节点有 3 个,quorum 设置为 2,那么任何一个想成为 Leader 的哨兵只要拿到 2 张票,就可以选举成功了。如果没有满足条件,就需要重新进行选举。
这时候有的同学就会问了,如果某个时间点,刚好有两个哨兵节点判断到主节点为客观下线,那这时不就有两个候选者了?这时该如何决定谁是 Leader 呢?
每位候选者都会先给自己投一票,然后向其他哨兵发起投票请求。如果投票者先收到「候选者 A」的投票请求,就会先投票给它,如果投票者用完投票机会后,收到「候选者 B」的投票请求后,就会拒绝投票。这时,候选者 A 先满足了上面的那两个条件,所以「候选者 A」就会被选举为 Leader。
如果哨兵集群中只有 2 个哨兵节点,此时如果一个哨兵想要成功成为 Leader,必须获得 2 票,而不是 1 票。
当然,你要问,如果 3 个哨兵节点,挂了 2 个怎么办?这个时候得人为介入了,或者增加多一点哨兵节点。
再说一个问题,Redis 1 主 4 从,5 个哨兵 ,quorum 设置为 3,如果 2 个哨兵故障,当主节点宕机时,哨兵能否判断主节点“客观下线”?能否自动切换?
如果 quorum 设置为 2 的话,并且有 3 个哨兵故障。此时哨兵集群还是可以判定主节点为“客观下线”,但是哨兵不能完成主从切换了,大家可以自己推演下。
quorum 的值建议设置为哨兵个数的二分之一加1 ,例如 3 个哨兵就设置 2,5 个哨兵设置为 3,而且 哨兵节点的数量应该是奇数 。
经过前面一系列的作后,哨兵集群终于完成了主从故障迁移,那么新主节点的信息要如何通知给客户端呢?
这主要 通过 Redis 的发布者/者机制来实现 的。每个哨兵节点提供发布者/者机制,客户端可以从哨兵消息。
比如,客户端了主从切换的,当哨兵把新主节点选择出来后,就会发布新主节点的 IP 地址和端口信息,这个时候客户端就可以收到这条信息,然后用这里面的新主节点的 IP 地址和端口进行通信了。
在我次搭建哨兵集群的时候,当时觉得很诧异。因为在配置哨兵的信息时,竟然只需要填下面这几个参数,设置主节点名字、主节点的 IP 地址和端口号以及 quorum 值。
后面才了解到, 哨兵节点之间是通过 Redis 的发布者/者机制来相互发现的 。
通过这个方式,哨兵 B 和 C 也可以建立网络连接,这样一来,哨兵集群就形成了。
主节点知道所有「从节点」的信息,所以哨兵会向主节点发送 INFO 命令来获取所有「从节点」的信息。
如下图所示,哨兵 B 给主节点发送 INFO 命令,主节点接受到这个命令后,就会把从节点列表返回给哨兵。接着,哨兵就可以根据从节点列表中的连接信息,和每个从节点建立连接,并在这个连接上持续地对从节点进行。哨兵// 连接池的数据库连接数 A 和 C 可以通过相同的方法和从节点建立连接。
正式通过 Redis 的发布者/者机制,哨兵之间可以相互感知,然后组成集群,同时,哨兵又通过 INFO 命令,在主节点里获得了所有从节点连接信息,于是就能和从节点建立连接,并进行了。
参考资料:
Redis 在 2.8 版本以后提供的 哨兵(Sentinel)机制 ,它的作用是实现 主从故障自动转移 。它会监测主节点是否存活,如果发现主节点挂了,它就会选举一个从节点切换为主节点,并且把新主节点的相关信息通知给从节点和客户端。
哨兵一般是以集群的方式部署,至少需要 3 个哨兵节点,哨兵集群主要负责三件事情: 、选主、通知 。
哨兵节点通过 Redis 的发布者/者机制,哨兵之间可以相互感知,相互连接,然后组成哨兵集群,同时哨兵又通过 INFO 命令,在主节点里获得了所有从节点连接信息,于是就能和从节点建立连接,并进行了。
哨兵集群会通过投票的方式判定主节点是否「客观下线」,如果判定主节点为客观下线,那么就会从所有的「从节点」中选择一个作为新主节点,选择的规则有以下步骤:
选择好从节点后,就需要从哨兵集群选择一个 leader 执行主从切换。选举 leader 的过程,也是一个投票的过程,任何一个想成为 leader 的哨兵节点,要满足两个条件:
选举完 leader 哨兵节点后,就执行主从切换。完成主从切换后,通过 Redis 的发布者/者机制通知客户端新主节点的 IP 地址和端口。
如果觉得本文对你有帮助,可以转发关注支持一下~
软件Xshell连接Redis作教程
redis.testWhileIdle=true方法/步骤
RedisTemplate1、打开已经安装成功的Xshell,点击左上角【新建】按钮,打开新建会话属性对话框
2、连接信息验证,输入redis的主机IP,端口号,名称(自定义,如test)
3、用户身份验证,方法:Password,输入连接redis的用户名和密码;点击【确定】按钮
4、点击会话对话框中的【连接】按钮
5、连接成功状态
6、通过命令
【redis-cli
-a
test123】;连接redis数据库,其中【test123】数据库是名称。到这里为止,您已经通过Xshell能完整的作rediNTP协议(网络时间协议):123s了,您会了吗?
3分钟搞定springboot整合redis
不需要填其他哨兵节点的信息,我就好奇它们是如何感知对方的,又是如何组成哨兵集群的?不多说直接上代码:
#Matser的ip地址
redis.hostName=172.16.44.148
#端口号
redis.port=6379
#如果有密码
redis.password=
#客户端超时时间单位是毫秒 默认是2000
redis.timeout=10000
#空闲数
redis.maxIdle=300
#连接池的数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
#redis.maxActive=600
#控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
redis.maxTotal=1000
#建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
redis.maxWaitMillis=1000
#连接的最小空闲时间 默认1800000毫秒(30分钟)
redis.minEvictableIdleTimeMillis=300000
#每次释放连接的数目,默认3
redis.numTestsPerEvictionRun=1024
#逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
redis.timeBetweenEvictionRunsMillis=30000
#是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
redis.testOnBorrow=true
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.junsi.demo.utils.RedisUtil;
/
Redis配置类
@author pzx
2019年6月8日
/
@Configuration
@PropertySource("classpath:redis.properties")
public class RedisConfig在主从集群中,主节点上有一个名为 sentinel :hello的频道,不同哨兵就是通过它来相互发现,实现互相通信的。 {
@Value("${redis.maxIdle}")
private Integer maxIdle;
@Value("${redis.maxTotal}")
private Integer maxTotal;
@Value("${redis.maxWaitMillis}")
private Integer maxWaitMillis;
@Value("${redis.minEvictableIdleTimeMillis}")
private Integer minEvictableIdleTimeMillis;
@Value("${redis.numTestsPerEvictionRun}")
private Integer numTestsPerEvictionRun;
@Value("${redis.timeBetweenEvictiNginx Web:80/443onRunsMillis}")
private long timeBetweenEvictionRunsMillis;
@Value("${redis.testOnBorrow}")
private boolean testOnBorrow;
@Value("${redis.testWhileIdle}")
private boolean testWhileIdle;
@Value("${spring.redis.cluster.nodes}")
private String clusterNodes;
@Value("${spring.redis.cluster.max-redirects}")
private Integer mmaxRedirectsac;
/
JedisPoolConfig 连接池
@return
/
@Bean
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 空闲数
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxTotal(maxTotal);
// 建立连接等待时间
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
jedisPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
// 每次逐出检查时 逐出的数目 如果为负数就是 : 1/abs(n), 默认3
jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig.setTestOnBorrow(testOnBorrow);
jedisPoolConfig.setTestWhileIdle(testWhileIdle);
return jedisPoolConfig;
}/
@param jedisPoolConfig
@return
/
@Bean
public JedisConnectionFactory JedisConnectionFactory(JedisPoolConfig jedisPoolConfig){
JedisConnectionFactory JedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig);
//连接池
JedisConnectionFactory.setPoolConfig(jedisPoolConfig);
//IP地址
JedisConnectionFactory.setHostName("172.16.44.148");
JedisConnectionFactory.setPort(6379);
//如果Redis设置有密码
//JedisConnectionFactory.setPassword(password);
//客户端超时时间单位是毫秒
JedisConnectionFactory.setTimeout(5000);
return JedisConnectionFactory;
}/
实例化 RedisTemplate 对象
@return
/
@Bean
public RedisTemplate
initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
return redisTemplate;
}/
@param redisTemplate
@param factory
/
private void initDomainRedisTemplate(RedisTemplate
//如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setEnableTransactionSupport(true);
redisTemplate.setConnectionFactory(factory);
}@Bean(name = "redisUtil")
public RedisUtil redisUtil(RedisTemplate
RedisUtil redisUtil = new RedisUtil();
redisUtil.setRedisTemplate(redisTemplate);
return redisUtil;
}}
redis.pid文件丢失什么原因,改怎么解决
连接该插槽的远程计算机的 IP 地址和端口号码。如果不指定 -n 参数,就显示与 IP 地址和端口对应主节点挂了的名所以,如果哨兵集群中有个哨兵挂掉了,那么就只剩一个哨兵了,如果这个哨兵想要成为 Leader,这时票数就没办法达到 2 票,就无法成功成为 Leader,这时是无法进行主从节点切换的。称。如果端口尚未建立,端口以星号()显示。版权声明:本文仅代表作者观点,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 e18875982367@163.com,本站将立刻删除