Redis集群集成Spring在Java中的使用详解编程语言
今天测试一下在Java中如何使用redis缓存一些东西。与spring是如何结合在一起的。封装一个操作redis的工具类,供项目中使用。
一:首先要把jedis依赖的jar包加上。
二:和spring做集成。
在spring配置文件中添加redis配置。(三主三从,7001-7002是主,7003-7005是从)
! 配置redis客户端集群版
bean id= jedisCluster >
constructor-arg
set
bean >
constructor-arg name= host value= 192.168.0.199 /
constructor-arg name= port value= 7000 /
/bean
bean >
constructor-arg name= host value= 192.168.0.199 /
constructor-arg name= port value= 7001 /
/bean
bean >
constructor-arg name= host value= 192.168.0.199 /
constructor-arg name= port value= 7002 /
/bean
bean >
constructor-arg name= host value= 192.168.0.17 /
constructor-arg name= port value= 7003 /
/bean
bean >
constructor-arg name= host value= 192.168.0.17 /
constructor-arg name= port value= 7004 /
/bean
bean >
constructor-arg name= host value= 192.168.0.17 /
constructor-arg name= port value= 7005 /
/bean
/set
/constructor-arg
/bean
bean id= jedisClientCluster >
三:接口和实现类
封装redis的一些常用操作(存储String 类型,获取String类型,设置过期时间,删除hash数据等等)
1.接口类如下:
/**
* redis操作接口
* @author itxm
*
*/
public interface JedisClient {
String set(String key, String value);
String get(String key);
Long hset(String key, String item, String value);
String hget(String key, String item);
Long incr(String key);
Long decr(String key);
Long expire(String key, int second);
Long ttl(String key);
Long hdel(String key, String item);
}
2.接口实现类如下:
/**
* redis操作工具接口实现类
* @author itxm
*
*/
public class JedisClientCluster implements JedisClient{
//注入jedisCluster
@Autowired
private JedisCluster jedisCluster;
/**
* 设置String数据类型
*
* @param key
* @param value
* @return
*/
@Override
public String set(String key, String value) {
return jedisCluster.set(key, value);
}
/**
* 获取String数据类型
*
* @param key
* @return
*/
@Override
public String get(String key) {
return jedisCluster.get(key);
}
/**
* 设置hash数据类型
*
* @param key
* @param item
* @param value
* @return
*/
@Override
public Long hset(String key, String item, String value) {
return jedisCluster.hset(key, item, value);
}
/**
* 获取hash数据类型
*
* @param key
* @param item
* @return
*/
@Override
public String hget(String key, String item) {
return jedisCluster.hget(key, item);
}
/**
* 删除hash数据
* @param key
* @param item
* @return
*/
@Override
public Long incr(String key) {
return jedisCluster.incr(key);
}
/**
* 加一操作
*
* @param key
* @return
*/
@Override
public Long decr(String key) {
return jedisCluster.decr(key);
}
/**
* 减一操作
*
* @param key
* @return
*/
@Override
public Long expire(String key, int second) {
return jedisCluster.expire(key, second);
}
/**
* 设置key的过期时间
*
* @param key
* @param second
* @return
*/
@Override
public Long ttl(String key) {
return jedisCluster.ttl(key);
}
/**
* 判断key是否过期
*
* @param key
* @return
*/
@Override
public Long hdel(String key, String item) {
return jedisCluster.hdel(key, item);
}
}
四:编写测试类进行测试
@Test
public void testJedisClientSpring() throws Exception {
//创建一个spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext( classpath:config/spring/applicationContext*.xml );
//从容器中获得JedisClient对象
JedisClient jedisClient = applicationContext.getBean(JedisClient.class);
//jedisClient操作redis
jedisClient.set( cliet1 , 500 );
String string = jedisClient.get( cliet1 );
System.out.println(string);
}
五:测试结果:
500
六:总结
不知道大家有没有疑问搭建redis集群的时候就是我往客户端配置了这么多节点,往redis中缓存数据的时候,它怎么知道该缓存到哪个服务器上呢?在这里我简单的说一下,Redis 集群中内置了16384 个哈希槽,搭建集群时,每台服务器上已经分配了固定的哈希槽编号。当需要在 Redis 集群中放置一个key-value(数据) 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据求余的结果,把数据映射到不同的redis服务器上。
转载请注明来源网站:blog.ytso.com谢谢!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14608.html
cjavaxml相关文章
- java motherfree video_Java Config 下的Spring Test方式
- Java学习笔记之七java函数的语法规则总结详解编程语言
- 使用Java操作Redis数据库(java中使用redis)
- Redis实现在线用户实时统计(redis在线用户)
- 分布式Java实现Redis分布式:从入门到精通(java实现redis)
- Java轻松使用Redis实现数据高效存储(java使用redis)
- Redis在分布式缓存中的应用(redis分布式缓存)
- Java无法连接Redis服务器(java连不上redis)
- 测试Java操作Redis实例(java测试redis)
- 时间设置Redis Java过期时间的方法(redisjava过期)
- 使用Java轻松读取Redis数据 – 一步一步指南!(java读取redis)
- 利用Redis节省空间(怎么在redis开辟空间)
- 秘籍学习实现纯Java版Redis(纯java版redis)
- 查看Redis历史操作简洁而又快速(查看redis历史操作)
- 狂神论java缓存之Redis(狂神说java redis)
- 实现数据表与Redis同步的方法(数据表 同步 redis)
- 构建Redis集群模式,实现性能更强的分布式储存(搭建redis集群模式)
- 提升网站性能,发挥Redis插件的作用TY博客自豪之处(ty博客的redis插件)
- 使用Redis缓存优化ThinkPHP性能(tp中使用redis)
- 大型网站如何利用Redis开发高效稳定的应用(大型网站用redis吗)
- 进行操作学会使用Java玩转Redis(在java中队redis)
- Redis默认有16个数据库(redis默认多少库)
- Redis实现高并发消息订阅(redis高并发订阅)
- Redis编程实战基于Java语言的NoSQL数据库解决方案(关于redis书籍)
- Redis面试中Java相关技术面试题汇总(redis面试题java)
- Redis集群设计构建高可用的系统(redis集群部署高可用)
- 构建Redis集群信息安全文件(redis集群信息文件)
- Redis实现Java语言下的遍历处理(redis遍历java)
- Redis技术实现评论排名系统(redis评论排名)
- Java实现Redis计数器功能(redis计数 java)