Redis之NOSQL数据库

Redis之NOSQL数据库
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

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()提供的方法

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

在这里插入图片描述

本文来源蹊源的奇思妙想,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/14693

发表评论