redis集群与主从配置
- redis安装-redis集群管理
- redis主从复制(读写分离)-redis集群管理
- redis主从从架构搭建-redis集群管理
- redis从库只读设置-redis集群管理
- redis主从复制的原理-redis集群管理
- redis sentinel(哨兵) 配置详解-redis集群管理
- redis sentinel.conf详解-redis集群管理
- redis 集群环境搭建-redis集群管理
- redis集群插槽分配-redis集群管理
- redis新增集群节点-redis集群管理
- redis删除集群节点-redis集群管理
- redis集群出现宕机没法访问-redis集群管理
- redis 集群使用主从复制架构-redis集群管理
redis 基础教程
- Redis概述
- 基于linux下redis安装与配置
- 基于window安装redis
- Redis配置文件详解
- 通过redis客户端查看和设置配置
- Redis 客户端连接、密码验证、连接数设置
- 使用info命令获取 redis 服务详细信息
- Redis Desktop Manager客户端使用教程
redis 数据类型
Redis 高级教程
知识点
相关文章
更多最近更新
更多redis整合spring示例一
2019-03-12 22:05|来源: 网路
这里使用java操作redis的示例,也是领悟书生网站项目中使用的代码.当然本示例也是参考网上的相关文章做了相应的改动。
首先看看redis所依懒的maven包
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> </dependency>
spring的配置文件
<context:component-scan base-package="com._656463.redis" /> <context:property-placeholder location="classpath:redis.properties" ignore-unresolvable="true"/> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="50" /> <property name="maxIdle" value="8" /> <property name="maxWaitMillis" value="1000" /> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="true"/> </bean> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" scope="singleton"> <constructor-arg index="0" ref="jedisPoolConfig" /> <constructor-arg index="1"> <list> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg name="host" value="${redis.host}" /> <constructor-arg name="port" value="${redis.port}" /> <property name="password" value="${redis.pass}"/> </bean> </list> </constructor-arg> </bean>
属性文件:
redis.host=121.40.80.59 redis.port=6379 redis.pass=dddddd redis.pool.maxIdle=300 redis.pool.maxActive=600 redis.pool.maxWait=1000 redis.pool.testOnBorrow=true
数据源接口
package com._656463.redis; import redis.clients.jedis.ShardedJedis; public interface RedisDataSource { /** * 获取redis的客户端 * * @return */ public abstract ShardedJedis getRedisClient(); /** * 将资源返还给pool * * @param shardedJedis */ public void returnResource(ShardedJedis shardedJedis); /** * 出现异常后,将资源返还给pool (其实不需要第二个方法) * * @param shardedJedis * @param broken */ public void returnResource(ShardedJedis shardedJedis, boolean broken); }
实现类
package com._656463.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool; @Repository("redisDataSource") public class RedisDataSourceImpl implements RedisDataSource { @Autowired private ShardedJedisPool shardedJedisPool; public ShardedJedis getRedisClient() { try { ShardedJedis shardJedis = shardedJedisPool.getResource(); return shardJedis; } catch (Exception e) { e.printStackTrace(); } return null; } public void returnResource(ShardedJedis shardedJedis) { shardedJedisPool.returnResource(shardedJedis); } public void returnResource(ShardedJedis shardedJedis, boolean broken) { if (broken) { shardedJedisPool.returnBrokenResource(shardedJedis); } else { shardedJedisPool.returnResource(shardedJedis); } } }
redis连接模板类RedisClientTemplate
package com._656463.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import redis.clients.jedis.ShardedJedis; @Repository("redisClientTemplate") public class RedisClientTemplate { @Autowired private RedisDataSource redisDataSource; public void disconnect() { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); shardedJedis.disconnect(); } public void delKey(String key){ ShardedJedis shardedJedis = redisDataSource.getRedisClient(); boolean broken = false; try { if (shardedJedis != null) { shardedJedis.del(key); } } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } } public void delKey(byte[] key){ ShardedJedis shardedJedis = redisDataSource.getRedisClient(); boolean broken = false; try { if (shardedJedis != null) { shardedJedis.del(key); } } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } } public void setExpire(String key,int seconds){ ShardedJedis shardedJedis = redisDataSource.getRedisClient(); boolean broken = false; try { if (shardedJedis != null) { shardedJedis.expire(key, seconds); } } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } } public void setExpire(byte[] key,int seconds){ ShardedJedis shardedJedis = redisDataSource.getRedisClient(); boolean broken = false; try { if (shardedJedis != null) { shardedJedis.expire(key, seconds); } } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } } /** * 设置单个值 * * @param key * @param value * @return */ public String set(String key, String value) { String result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.set(key, value); } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } /** * 获取单个值 * * @param key * @return */ public String get(String key) { String result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.get(key); } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } /** * 存储byte对象 * * @param key * @param value */ public void set(byte[] key, byte[] value) { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return; } boolean broken = false; try { shardedJedis.set(key, value); } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } } /** * 获取byte[]对象 * * @param key * @return */ public byte[] get(byte[] key) { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return null; } boolean broken = false; try { return shardedJedis.get(key); } catch (Exception e) { e.printStackTrace(); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return null; } }
先到这,下篇继续
redis知识点
redis快速入门
reids常用命令
redis数据结构
java_API_客户端
Jedis
Tlcache
redis_持久化
AOF
RDB
发布订阅(pub/sub)
redis_事件
redis事务
redis通讯协议
RESP(Redis Serialization Protocol)
redis高可用
redis哨兵
监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)
redis主从复制
-
- 主从复制
- 从从复制
-
- slave向master发送sync命令;
- master开启子进程执行bgsave写入rdb文件;
- master发送缓存和RDB文件给slave;
- master发送数据发送给slave完成复制;
redis集群(Redis_Cluster)
相关问答
更多-
spring mvc整合redis有什么用[2024-02-12]
缓存或者session,session放到redis 可以方便分布式以及系统重启不丢失系统的session信息#这样用户就不会感觉到服务是否重启过。 -
spring整合redis后怎么更改db[2022-02-20]
本人,对于以前redis的学习是非常痛苦的!近期将以前的东西捡起来。以博客的形式存储,以便于以后快速捡起来,并和广大同胞一起分享! 1):简单介绍 redis 是基于C语言开发。 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 redis 是一个 缓存数据库(片面的理解) 既可以做缓存,也可以将数据持久化到磁盘中! 本 ... -
spring 和 redis 整合 需要哪些jar包[2022-10-05]
java使用redis缓存可以使用jedis框架,jedis操作简单,没有什么复杂的东西需要学习,网上资料很多,随便看看就会了. 将spring与redis缓存集成,其实也是使用jedis框架,只不过spring对它进行了一层封装,并将这层封装库命名为spring-data-redis. 下面将要使用spring-data-redis与jedis的jar包,并通过spring的aop功能,将redis缓存无缝无侵入的整合进来. 可以到http://download.csdn.net/detail/u0136 ... -
是不是有一款什么手机软件,可以很自然的拉长腿部?不是美图秀秀,有知道的不?[2022-10-20]
spring -
spring整合redis后怎么更改db[2023-10-16]
本人,对于以前redis的学习是非常痛苦的!近期将以前的东西捡起来。以博客的形式存储,以便于以后快速捡起来,并和广大同胞一起分享! 1):简单介绍 redis 是基于C语言开发。 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 redis 是一个 缓存数据库(片面的理解) 既可以做缓存,也可以将数据持久化到磁盘中! 本 ... -
spring 和 redis 整合 需要哪些jar包[2023-11-30]
java使用redis缓存可以使用jedis框架,jedis操作简单,没有什么复杂的东西需要学习,网上资料很多,随便看看就会了. 将spring与redis缓存集成,其实也是使用jedis框架,只不过spring对它进行了一层封装,并将这层封装库命名为spring-data-redis. 下面将要使用spring-data-redis与jedis的jar包,并通过spring的aop功能,将redis缓存无缝无侵入的整合进来. 可以到http://download.csdn.net/detail/u0136 ... -
spring mvc+mybatis怎么整合redis[2022-06-30]
基于这段时间折腾redis遇到了各种问题,想着整理一下。本文主要介绍基于Spring+Mybatis以注解的形式整合Redis。 -
我觉得搭建框架必须要自己来动手做!可能前期会很困扰,出现很多错误。但是只要有一次搭建成功的话,你就会豁然开朗。因为每个人的思路,方法都不一样。单纯的借用别人的框架去完成功能,之后会更困扰的!
-
spring cache +redis与直接用redis有什么不同么?[2022-11-03]
集群环境下,每台服务器的spring cache是不同步的,这样会出问题的,spring cache只适合单机环境 redis是设置单独的缓存服务器,所有集群服务器统一访问redis,不会出现缓存不同步的情况 spring cache是很早就有的东西,现在+redis是为了顺应时代,更好的兼容集群环境,加强保留spring cache功能,不如直接使用redis -
春天的英语怎么读?[2022-05-21]
spring