Spring整合Redis
2020-12-22 21:27
标签:word redis frame text hash core 方式 选择 封装 Oracle: 存储数据, 使用SQL操作数据库 Java 程序作为客户端, 发送sql, 操作数据库: jdbc Redis: key/value 内存式数据库, 存储数据, redis: 存储热点数据 Java程序作为客户端, jedis 与Spring整合, spring-data-redis, 底层使用的jedis 1、导入依赖 2、添加redis的配置文件:redis.properties 3、在spring配置文件中,配置redis: applicationContext-redis.xml: ①如果添加了哨兵机制则需要配置,或开启几台配几台,可以不配置 name就是哨兵的名字 配置几台哨兵就添加几个bean,ip、端口需要一致 ②jedis连接对象 底层:JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisSentinelConfiguration); ...jedisConnectionFactory.setPoolConfig(); ....sethostName... ③RedisTemplate的bean 配置RedisTemplate这个bean,类似Mybatis的SqlSession, 使用RedisTemplate操作redis, 封装好了操作redis的方法 , 他有一个子类, StringRedisTemplate,开发中, 使用RedisTemplate 注意:一般只使用RedisTemplate,实体类习惯性实现序列化接口 RedisTemplate / StringRedisTemplate中定义了对redis的5种数据结构的操作: 1、两者数据各自存,各自取,数据不互通。 RedisTemplate不能取StringRedisTemplate存入的数据。 StringRedisTemplate不能取RedisTemplate存入的数据 2、序列化策略不同。 RedisTemplate采用JDK的序列化策略 StringRedisTemplate采用String的序列化策略 如果你需要缓存的是字符串,那么你就使用StringRedisTemplate即可。 但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象, 那么使用RedisTemplate是更好的选择 1、opsForValue : String 2、opsForHash() : hash 3、rightPushAll :list 4、opsForSet : set 5、opsForZSet : ZSet Spring整合Redis 标签:word redis frame text hash core 方式 选择 封装 原文地址:https://www.cnblogs.com/64Byte/p/13215682.html使用Spring-data-redis+jedis操作redis
dependency>
groupId>org.springframework.datagroupId>
artifactId>spring-data-redisartifactId>
version>1.7.2.RELEASEversion>
dependency>
dependency>
groupId>redis.clientsgroupId>
artifactId>jedisartifactId>
version>2.8.1version>
dependency>
#访问地址
redis.host=127.0.0.1
#访问端口
redis.port=6379
#注意,如果没有password,此处不设置值,但这一项要保留
redis.password=
#最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
redis.maxIdle=300
#最小空闲数,数据库连接的最小空闲时间。
redis.minIdle=10
#连接池的最大数据库连接数。设为0表示无限制
redis.maxActive=600
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
redis.maxWait=5000
#在borrow获取一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;
redis.testOnBorrow=true
bean id="redisSentinelConfiguration"
class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
property name="master">
bean
class="org.springframework.data.redis.connection.RedisNode">
property name="name" value="mymaster" /> --name的意思
bean>
property>
property name="sentinels">
set>
bean
class="org.springframework.data.redis.connection.RedisNode">
constructor-arg name="host" value="127.0.0.1" />
constructor-arg name="port" value="10001" />
bean>
bean
class="org.springframework.data.redis.connection.RedisNode">
constructor-arg name="host" value="127.0.0.1" />
constructor-arg name="port" value="10002" />
bean>
bean
class="org.springframework.data.redis.connection.RedisNode">
constructor-arg name="host" value="127.0.0.1" />
constructor-arg name="port" value="10003" />
bean>
set>
property>
bean>
bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
property name="poolConfig" ref="jedisPoolConfig">property>
property name="hostName" value="${redis.host}">property>
property name="port" value="${redis.port}">property>
property name="password" value="${redis.password}" />
constructor-arg name="sentinelConfig"
ref="redisSentinelConfiguration" />
bean>
bean id="jedisPoolConfig"
class="redis.clients.jedis.JedisPoolConfig">
property name="maxTotal" value="${redis.maxActive}" />
property name="maxIdle" value="${redis.maxIdle}" />
property name="minIdle" value="${redis.minIdle}" />
property name="maxWaitMillis" value="${redis.maxWait}" />
property name="testOnBorrow" value="${redis.testOnBorrow}" />
bean>
bean id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate">
property name="connectionFactory"
ref="jedisConnectionFactory" />
property name="keySerializer">
bean
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
property>
property name="valueSerializer">
bean
class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
property>
property name="hashKeySerializer">
bean
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
property>
property name="hashValueSerializer">
bean
class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
property>
property name="enableTransactionSupport" value="false" />
bean>
public class House implements Serializable{
private static final long serialVersionUID = -4392862698633582732L;
使用RedisTemplate来操作Redis
测试方法(5种数据类型的简单使用):
// 存入数据
redisTemplate.opsForValue().set("aaa", "111", 100, TimeUnit.SECONDS);
redisTemplate.opsForValue().set("bbb", "2222");
// 获取数据
String k1 = (String) redisTemplate.opsForValue().get("bbb");
System.out.println(k1);
// 一对key/value添加
redisTemplate.opsForHash().put("h1", "name", "张三");
redisTemplate.opsForHash().put("h1", "age", "21");
redisTemplate.opsForHash().put("h1", "sex", "男");
//批量添加
Map map = new HashMap();
map.put("name", "李四");
map.put("age", "21");
map.put("sex", "男");
redisTemplate.opsForHash().putAll("h2", map);
//取值
System.out.println(redisTemplate.opsForHash().get("h1", "name"));
//redisTemplate.opsForHash().hasKey("h1", "age");
Map reMap = redisTemplate.opsForHash().entries("h2");
System.out.println(reMap);
redisTemplate.opsForList().rightPushAll("l1", "1","2","3","4","5","1");
redisTemplate.opsForSet().add("s1", "1","2","3","1","4");
//存数据
Set
上一篇:Python - 字符串类型转换