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();
}