springboot 使用Redis

1 StringTemplateRedis和RedisTemplate的区别

 

1 两者关系是StringRedisTemplate继承了RedisTemplate ,但是两者的数据是不共通的也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据

2 RedisTemplate 是使用的JdkSerialzationRedisSerializer 存入数据会将数据先序列化字节数组然后存入redis数据库   StringRedisTemplate 使用的是StringRedisSerializer

3 那么如果你的redis数据库中存储的是字符串数据或者你要存储的数据就是字符串类型,那么你就是使用StringRedisTemplate

   但是如果你使用的数据是复杂的对象类型,而取出的时候又不想做任何数据转化,直接从redis中取出一个对象,那么使用RedisTemplate是个更好的选择

  redisTemplate 中存储数据都是字节数组,当redis中存入的数据是可读形式而非字节数组时,使用redisTemplate取值的时候会无法取出数据,而导致获取的值为null.

 

个人感觉redis 跟hashmap的运行机制,只不过hashmap 是单机的,对单台机器不断的压榨扩容,而redis是可以创建一个共享池,那么是负载均衡的,群狼战术。

2 RedisTemplate 操作

redisTemplate.opsForvalue():操作字符串
reidsTemplate.opsForhash()操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet(); //操作set
redisTemplate.opsForZset() ;//操作有序的set

 3 StringTemplateRedis操作

stringRedisTemplate.opsForValue().set("test","100",60*10,TimeUnit.SECONDS); //向redis存入key-test-value-100并且10分钟过期的键值对
stringRedisTemplate.boundValueops("test").increment(-1);


StringRedisTemplate.opsForvalue.get("test") //根据key获取缓存中的val

StringRedisTemplate.boundValueOps("test").increment(1) ;//将值为+1
stringRedisTemplate.getExpire("test")  //根据key获取过期时间
StringRedisTemplate.getExpire("test",TimeUnit,SECONDS) //根据key获取过期时间并指定换算单位
stringRedistemplate.delete("test") //根据key删除缓存
stringRedisTemplate.hashkey("test");
//检查键值对

stringRedisTemplate.opsForSet().add("red_123","1","2","3");
//向指定key存放set集合

stringRedisTemplate.expire("red_123","100",TimeUnit.MILLSECONDS); 设置过期时间

stringRedisTemplate.opsForSet().isMember("red_123","1");//根据key查看集合中是否存在指定的数据

stringRedisTemplate.opsForSet().members("red_123"); //根据key获取set集合

 

验证码的实现原理

1 发送一个请求,先生成一个验证码存入到redis,其中key-telephone,value--为random生成的二维码

并且设置其过期时间

2  另一个请求通过key值和value去校验redis中是否存在相关的值,如果值不相同就返回错误信息 

 

你可能感兴趣的:(java,redis)