Redis之NOSQL数据库

redis数据库功能
借助redisTemplate来对redis进行操作
redisTemplate 提供了对5种数据结构的操作结构
redisTemlate.opsForValue() //字符串
redisTemlate.opsForHash() //hash (JSON) 返回结果是个hash 操作是在hash结构下操作的
redisTemlate.opsForList() //list集合 返回结果是个list 操作是在list结构下操作的
redisTemlate.opsForSet() //操作Set 返回结果是个Set 操作是在Set结构下操作的
redisTemlate.opsForZSet() //有序集合 返回结果是个ZSet 操作是在ZSet结构下操作的

redisTemplate.opsForValue()提供的方法:
https://blog.csdn.net/qq_25135655/article/details/80357137
set(Key k,value) 新增一个字符串类型的值
get(Object key) 获取一个字符串类型
append(Key k,String value) 在原有的值基础上新增字符串到末尾
get(Key k,long start,long end) 截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串。
getAndSet(Key k,Value) 获取原来key键对应的值并重新赋新值。 与CAS的逻辑不同

如何构建redisTemplate?
第一步:创建JedisConnectionFactory (可以直接通过 @PropertySouce(“redis.properties”) 的方式将properties格式文件注入)

public JedisConnectionFactory convertJedisConnectionFactory() {

JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("127.0.0.1");//IP地址
jedisConnectionFactory.setPort(6379);//端口号
jedisConnectionFactory.setPassword("");//密码

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(20);
jedisPoolConfig.setMaxIdle(20);
jedisPoolConfig.setMinIdle(20);
jedisPoolConfig.setMaxWaitMillis(30000);
jedisPoolConfig.setTestOnBorrow(false);
jedisPoolConfig.setTestOnReturn(false);
// jedisPoolConfig.setTestWhileIdle();

jedisConnectionFactory.setPoolConfig(jedisPoolConfig);
jedisConnectionFactory.afterPropertiesSet();
return jedisConnectionFactory;
}

第二步:创建redisTemplate模板(对序列化器和反序列化器进行配置)

@Bean(value = "template")
public RedisTemplate<String,Object>redisTemplate()
{
RedisTemplate<String,Object> template =new RedisTemplate<>();
template.setConnectionFactory(convertJedisConnectionFactory());

Jackson2JsonRedisSerializer jsonRedisSerializer=new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om=new ObjectMapper();
//指定序列化的域
om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);
//指定序列化输入的类型(排除final类型)
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jsonRedisSerializer.setObjectMapper(om);
//主体选择序列化方式 JSON
template.setDefaultSerializer(jsonRedisSerializer);
//Map部分
//序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
//设置hash key和value的序列化模式
template.setHashKeySerializer( new StringRedisSerializer());
template.setHashValueSerializer(jsonRedisSerializer);

//表示设定结束
template.afterPropertiesSet();
return template;
}

第三步:获取操作对象(以普通字符串操作为例)

//一对一的数据类型
@Bean(name ="ObjectredisTemplate")
public ValueOperations<String,Object>valueOperations(RedisTemplate<String,Object> template)
{
return template.opsForValue();
}

猜你喜欢

转载自blog.csdn.net/weixin_40990818/article/details/83042696