redis学习

一.什么是Redis

Redis是一个非关系型数据库,具有很高的存取性能,一般用作缓存数据库,减少正常存储数据库的压力。

Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。

二.RedisTemplate及其相关方法

1.RedisTemplate

Spring封装了RedisTemplate对象来进行对Redis的各种操作,它支持所有的Redis原生的api。RedisTemplate位于spring-data-redis包下。RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。

注意 RedisTemplate是一个key和value都是泛型的模板类,一般情况下key为String类型,如:RedisTemplate<String,Object>。

2.RedisTemplate中定义了对5种数据结构操作

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

opsForXXX和boundXXXOps的区别?

XXX为value的类型,前者获取一个operator,但是没有指定操作的对象(key),可以在一个连接(事务)内操作多个key以及对应的value;后者获取了一个指定操作对象(key)的operator,在一个连接(事务)内只能操作这个key对应的value。

关于计数的API(increment)有一个bug,需要各位使用中注意,通过increment计数以后,通过get方式获取计数值的时候可能会抛出EOF异常(和本地的jdk以及redis的编译版本有关),可以考虑使用boundValueOps(key).get(0,-1)获取计数值。

    StringRedisTemplate是RedisTemplate的一个实例

二.redis使用实列

1.springBoot项目添加依赖

<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- jeids -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0</version>
</dependency>

2.application.yml中添加配置
spring:
redis:
host: 127.0.0.1
port: 6379
timeout: 10s
jedis:
pool:
max-active: 10
min-idle: 5
max-idle: 10
max-wait: 20s
cache:
type: redis #缓存类型
cache-names: redisCache #缓存名字

server:
port: 8080


logging:
level:
root: DEBUG #自定义注解,开启所有注解
org.springframework: DEBUG #开启spring注解
org.mybatis: DEBUG #开启mybatis注解

3.简单的使用例子
@Autowired
private StringRedisTemplate stringRedisTemplate;

//操作redis
stringRedisTemplate.opsForValue().set("str1","zhang");
stringRedisTemplate.boundValueOps("str2").set("1");
stringRedisTemplate.boundValueOps("str2").increment(2); //加2
String s1 = stringRedisTemplate.opsForValue().get("str1");   //zhangpeng
String s2 = stringRedisTemplate.opsForValue().get("str2") //3





原文地址:https://www.cnblogs.com/zhangpeng8888/p/10618448.html