导航:首页 > 文件管理 > java单节点redis配置文件

java单节点redis配置文件

发布时间:2023-03-28 23:52:17

Ⅰ Redis 学习总结(3) Redis 哨兵模式

在实际开发中不会仅仅部署一个 Redis 服务器,为了获得高可用,Redis 哨兵模式 则是高可用的一种选择。

本文先介绍下 哨兵模式,再介绍了如何在 springboot 项目中使用。

这意味着使用 Sentinel (哨兵模式),您可以创建一个 Redis 部署,它可抵抗某些类型的故障(进行故障迁移)而无需人工干预。

它有这些功能:

Sentinel 的分布式特性
Redis Sentinel 是一个分布式系统,多个 Sentinel 进程协同工作,有这些优势:卖滚

部署前需要了解:

三个节点的基本配置

法定人数和仲裁
在配置 哨兵模式时,要指定一个 quorum,它可理解为“法定人数”。
假设有3 个 哨兵,法定人数为2。那么:

哨兵和副本的自动发现
Sentinel 与其他 Sentinel 保持连接,以便相互检查彼此的可用性并交换消息。

但是,您不需要在您运行的每个 Sentinel 实例中配置其他 Sentinel 地址的列表,因为 Sentinel 使用 Redis 实例的 Pub/Sub 功能来发现正在监视相同主节点和副本的其他 Sentinel。

类似地,您不需要配置附加到主服务器的副本地址在哪里,因为 Sentinel 会通过查询 Redis 自动发现它们。

参考我的另一篇文章:

一般需要三个节点,每个节点有一个 redis 和一个哨兵。

下面再分别描述。

我这里按三个 节裤隐点,先配置 redis 的主从复制。1个节点作为 master ,2个副本。

配置节点1:master
这里的 redis 作为 master 主redis,其他两个节点作为从节点。
我的文件夹名字叫 box1,这里编辑一个 box1/redis.conf 文件,主要配置内容如下:

配置节点2:副本
编辑一个 box2/redis.conf 文件,主要配置内容如下:

配置节点3:副本
编辑一个 box3/redis.conf 文件,主要配置内容如下:

分别启动这三个redis
命令行执行 redis-server ,并指定 配置文件的路径参数。

如何查看“主从复制”是否配置成功?
使用 info replication 命令,操作如下:

副本节点设置为只读?
从 Redis 2.6 开始,副本已被默认设置为 只读,无需额外配置。.

一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。

第一个哨兵:
哨兵的 默认端口是 26379 ,这里不改。

第二个哨兵:
修改哨兵端口。

第三个哨兵:
修改哨兵端口。

启动哨兵
使用 redis-sentinel 命令,分别启动这三个哨兵

哨兵的自动发现
当三个哨兵都启动后,在各个哨兵的打印日志里可以看到, 三个哨兵已互相发现了彼此的存在 。

至此,配置完毕了,我们有三个 redis,和三个哨中纯余兵,看下截图。

模拟 master 宕机
按 ctrl+c 停止 master ,其位于 6379 。停止后,从日志可以看到,哨兵和 redis副本先努力继续连接 6379,反复几次失败后,开始选举出新的 master。截图如下:

至此,配置完毕。

我们看下 springboot 项目的客户端如何配置 以访问 哨兵模式的 redis。

Redis 哨兵支持
对于处理高可用Redis,Spring Data Redis 已经支持Redis Sentinel,使用RedisSentinelConfiguration,如下例所示:

Jedis 和 Lettuce 两种 redis 驱动都可以支持。

RedisSentinelConfiguration 也可以用可以 通过 PropertySource 来设置,它允许您设置以下属性:

配置application.yml

比如我这里修改我的 application.yml 文件如下:

我的配置文件示例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel
我的 springboot 配置实例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel/springboot_redis_demo

Redis官网 sentinel 介绍
https://redis.io/topics/sentinel

spring-data/data-redis
https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis:sentinel

https://www.cnblogs.com/jaycekon/p/6237562.html

END

Ⅱ java怎样配置redis占用多大内存

Redis的配置
daemonize 如果需要在后台运行,把该项改为yes
pidfile 配置多个pid的地址,默认在/var/run/redis.pid
bind 绑定ip,设置后只接受自该ip的请求
port 监听端口,默认为6379
timeout 设置客户端连接时的超时时间,单位为秒
loglevel 分为4级,debug、verbose、notice、warning
logfile 配置log文件地址
databases 设置数据库的个数,默认使用的数据库为0
save 设置redis进行数据库镜像的频率,保存快照的频率,第一个*表示多长时间, 第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression 在进行镜像备份时,是否进行压缩
Dbfilename 镜像备份文件的文件名
Dir 数据库镜像备份的文件放置路径
Slaveof 设置数据库为其他数据库的从数据库
Masterauth 主数据库连接需要的密码验证
Requirepass 设置登录时需要使用的密码
Maxclients 限制同时连接的客户数量
Maxmemory 设置redis能够使用的最大内存
Appendonly 开启append only模式
appendfsync 设置对appendonly.aof文件同步的频率
vm-enabled 是否虚拟内存的支持
vm-swap-file 设置虚拟内存的交换文件路径
vm-max-memory 设置redis使用的最大物理内存大小
vm-page-size 设置虚拟内存的页大小
vm-pages 设置交换文件的总page数量
vm-max-threads 设置VMIO同时使用的线程数量
glueoutputbuf 把小的输出缓存存放在一起
hash-max-zipmap-entries 设置hash的临界值
activerehashing 重新has

Ⅲ RedisTemplate在java哪个包下面

redisDao封装类-其他集成他
[java] view plain
package com.ffcs.wlan..common;
import javax.annotation.Resource;
import org.springframework.data.redis.core.StringRedisTemplate;

/**
* AbstractBaseRedisDao
* @author hugsh
* @version <b>1.0</b>
*/
public abstract class AbstractBaseRedisDao<K, V> {

@Resource
protected StringRedisTemplate redisTemplate;

public void setRedisTemplate(StringRedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
}

批量插入(不关注返回值)
[java] view plain
@Repository
public class RedisInitDao extends AbstractBaseRedisDao<String, Object> {

Logger logger=Logger.getLogger(RedisInitDao.class);

/**
* 批量向redis中孝喊插入H码:key(tableName:hcode) value(pcode)
* 如果键已存在则返回false,不更新,防止覆盖。使用pipeline批处理方式(不关注返回值)
* @param list 一个map代表一行记录,2个卖慎灶key:hcode & pcode。
* @param tableName redis中key的值为tableName:hcode 对中扮应value值为pcode。
* @return
*/
public boolean addHcode(final List<Map<String, Object>> list,final String tableName) {
boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
public Boolean doInRedis(RedisConnection connection)
throws DataAccessException {
RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
for (Map<String, Object> map : list) {
byte[] key = serializer.serialize(tableName+":"+map.get("hcode").toString());
byte[] name = serializer.serialize(map.get("pcode").toString());
connection.setNX(key, name);
}
return true;
}
}, false, true);
return result;
}

批量获取(有返回值)
[java] view plain
/**
* 从redis中获取(获取密码日志) rPop从链表尾部弹出(最早的日志)
* 多线程并发读取日志长度的时候,比如都得到结果是1000条。
* 当多线程每个都 循环1000次 pop弹出 日志的时候,
* 由于是多线程一起pop,所以每个线程获得的数组中都会包含 null 甚至有的全是null
* @return
*/
public List<String> getLogFromRedis() {

final RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
//密码日志的长度
final Long pwdLogSize=redisTemplate.opsForList().size("getpwdList");

List<Object> pwdLogList=redisTemplate.executePipelined(new RedisCallback<String>() {
@Override
public String doInRedis(RedisConnection conn)
throws DataAccessException {
for (int i=0 ;i<pwdLogSize ;i++) {
byte[] listName = serializer.serialize("getpwdList");
conn.rPop(listName);
}
return null;
}
}, serializer);

// 去除结果中的null
ArrayList<String> newList=new ArrayList<String>();
for (Object o : pwdLogList) {
if(o!=null)
newList.add(String.valueOf(o));
}
return newList;
}
基础数据类型工具类(opsForList)

[java] view plain
/**
* 向redis中插入获取密码日志:leftPush 从链表头部压入
* @param pwdLog 获取密码的日志
* @return
*/
public void addLogIntoRedis(final String pwdLog) {
log.info("insert getpwd log into redis:"+pwdLog);
try {
redisTemplate.opsForList().leftPush("getpwdList", pwdLog);
} catch (Exception e) {
log.error(e.getMessage());
}
}

配置文件
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.maxTotal}"></property>
<property name="maxIdle" value="${redis.maxIdle}" />
<property name="maxWaitMillis" value="${redis.maxWait}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>

<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="${redis.host}" p:port="${redis.port}" p:pool-config-ref="poolConfig"/>

<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
</bean>

</beans>
[html] view plain
<!-- 引入项目配置文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:redis.properties</value><!-- 引入redis配置文件 -->
<value>classpath:jdbc.properties</value><!-- 定义spring-jdbc配置信息路径 -->
</list>
</property>
</bean>

<!-- 自动扫描model,和service包(自动注入) -->
<context:component-scan base-package="com.ffcs.wlan.model,com.ffcs.wlan.,com.ffcs.wlan.service" />

属性文件
[html] view plain
# Redis settings

redis.host=192.168.11.100
redis.port=6379
#redis.pass=hugsh

redis.maxIdle=25
redis.maxTotal=250
#redis.maxActive=600 invalid in2.4
redis.maxWait=1000
redis.testOnBorrow=true

Ⅳ java解析redis 的appendonly.aof文件

Redis有三种来类型的落地自文件:
数据文件-在配置中可设置其位置及文件名,默认文件名mp.rdb
日志文件-在配置中也可以配置.当然,在你是以daemon方式运行的时候,这个值就不要设置为stdout了,这么设置会自动被换成/dev/null

Ⅳ java redis 实现消息队列 需要做哪些配置

没什么问题啊,就是Jedis的lpush. 和rpop这两个命令。用的时候就直接把java对象序列化成json。rpop的时候把拿到的json反序列化成java对象

Ⅵ redis.config配置文件详解

配置文件units单位对大小写不敏感。

可以理解为Java的import,可以配置多个其他的配置文件在该配置下。

在多长的事件内,操作了多少条命令,会持久化到.rdb文件或者.aof文件。

在这里可以给redis设置登录的密码。

Ⅶ java使用redis时不时的报没有可用的链接

出现这种问题从以下几个方面排查:
1、网络不稳定,这种情况只会出现在调用机器和redis服务器不在同一台机器的情况,如果调用本机redis请忽略。
2、使用了连接池,并发较大,连接池配置的最大连接数过小,客户端从连接池获取连接时,如果没有可用连接就阻塞当前线程直到有可用连接,等待时间超过配置的超时时间后会抛出连接超时异常。
3、同样是使用连接池的情况,从连接池获取连接,使用完成后没有释放连接,导致连接池链接耗尽。
4、还有可能是硬件性能瓶颈,比如单节点的redis,但是需要支持特别大的并发量,无论怎么优化配置都是徒劳的,这种情况就需要考虑做读写分离,搭建redis集群等,

Ⅷ 怎么在java中实现redis的添加数据

第一步,在windows下载安装配置好redis数据库。这里我就不再概述了。下载jedis-2.4.2.jar,当然最好是下载最新版本的jar包。这个在网络搜索下就出来的。下载后,放在一个文件夹下面,一会会需要到。

第二步。打开eclipse,新建一个java工程。如下图所示:

第三步:在Test这个java工程里面,我们新建一个folder,命名lib,把刚才下载的jedis-2.4.2.jar包放在我们新建的lib的包下面,如下图所示:

第四步,在eclipse中,选中jar包,build path下。然后我们再Test这个项目里面我们新建一个class,class名字为TestConnect。

第五步,在类里面,我们输入如下的内容:
// Connecting to Redis server on localhost
//实例化一个客户端
Jedis jedis = new Jedis("localhost");
//=================================================
// check whether server is running or not
//ping下,看看是否通的
System.out.println("Server is running: " + jedis.ping());
//保存一个
jedis.set("leiTest", "localhost Connection sucessfully");
//获取一个
System.out.println("通过key获取value: " + jedis.get("leiTest"));

第六步,对刚才的类进行运行,ctrl+f11快捷键运行下,如下图所示:

第七步,进一步验证我们是否在redis上是否保存了数据,并且能够取出来,我们到redis安装包的目录,如下图,打开红色框内的 redis-cli.exe,打开后,我们进入下面的第二个图片的界面。

第八步:我们在redis的客户端的界面 输入 get leiTest 这个指令。leiTest是刚才在eclipse中我们存入redis数据库中的一个String类型的键。如下图,证明我们确实成功了,你也试试吧。

Ⅸ java连redis数据property怎么配置文件

redis.host=192.168.1.12//主机名
redis.port=6379//端口号
redis.username=hr//用户名
redis.password=123//密码

Ⅹ java jedis 链接不上redis 防护墙已经关闭 ip能ping通 端口号以开 配置文件也改过 就是连不上

你念罩看看你的redis配置文件,在配置文件里可以设枣高神置是否可以远程访问, 默认只能本地访问。还有就是 你的redis 设置 安全登陆名了吗。
或者telnet 一下 看看端口凳亏通不通?

阅读全文

与java单节点redis配置文件相关的资料

热点内容
会声会影x5创建视频文件格式 浏览:489
文件夹隐藏属性 浏览:432
家里的网络箱为什么那么乱 浏览:237
新兴大数据是什么意思 浏览:54
如何下载在线pdf文件 浏览:355
u盘插手机上怎么找里面的文件 浏览:113
武林风用哪个电视app观看 浏览:382
苹果5s进水黑屏怎么办 浏览:176
809h编程器是什么意思 浏览:532
网页文件提取excel表格 浏览:442
计生办两非文件内容 浏览:435
微信个人相册空白点进去有动态 浏览:964
word长线怎么打 浏览:320
程序破解工具 浏览:513
文档转pdf字数多了文件大小小了 浏览:122
函数式编程为什么适合大数据开发 浏览:966
领英能传pdf文件吗 浏览:784
文件找不到保护锁 浏览:682
山寨苹果刷安卓系统 浏览:194
eda技术实用教程实验部分 浏览:870

友情链接