1.我的项目是maven项目,最近因为要用到,先引进下面两个包
org.springframework.boot spring-boot-starter-data-redis 1.5.2.RELEASE
2. 配置redis链接,因为spring-data集成了reids,我们只需要在yml文件里面配置数据库连接等就OK了
spring: redis: database: 0 # Redis数据库索引(默认为0) host: 127.0.0.1 # Redis服务器地址 port: 6379 # Redis服务器连接端口 password:
3.StringRedisTemplate 是对redis数据库操作的封装模板,下图,是我们要使用模板的类关系
4.下面上测试代码咯!
1.先获取方法模板,可以使用@autowired 自动注入
String key = "hexiaowu";
/**
* 先获取redis对value的操作对象,需要先设定key
*/
BoundValueOperations stringTemplate = redisTemplate.boundValueOps(key);
2.对value操作的模板,有很多方法,我们下面一个一个来测试,(stringTemplate对象下会有多个set、get方法)
set 方法
有三个重载的方法,分别是干嘛的呢,我们来测试下吧
//赋值key
stringTemplate.set("test");
//获取value
String value = stringTemplate.get();
System.out.println(key+"的值为:"+value);
//从value下标,第0位开始替换原有字符串
stringTemplate.set("test1",0);
String value1 = stringTemplate.get();
System.out.println(key+"的值为:"+value1);
//从value下标,第1位开始替换原有字符
stringTemplate.set("test2",1);
String value2 = stringTemplate.get();
System.out.println(key+"的值为:"+value2);
//从value下标第7位进行替换,如果超过原有字符串长度,差额中间补齐并且则将原有字符串跟新的进行拼接,
stringTemplate.set("test3",7);
String value3 = stringTemplate.get();
System.out.println(key+"的值为:"+value3);
/**
* 设置value缓存时间 V value, long timeout, TimeUnit unit
* 三个字段分别对应 value,缓存时间,缓存单位,例如天,小时等,具体的,看TimeUnit源码,上面有描写,这里就不一一介绍了
*/
//设置超时时间为1天
stringTemplate.set("testTimeout",1, TimeUnit.DAYS);
//获取缓存时间,单位 秒
Long expire = stringTemplate.getExpire();
System.out.println(key+"的缓存时间为:"+expire);
下面是测试结果:
hexiaowu的值为:test
hexiaowu的值为:test1
hexiaowu的值为:ttest2
hexiaowu的值为:ttest2test3
hexiaowu的缓存时间为:86400
说明结果跟注释描写的一致,那接下来,我们测试其他方法咯
get 方法
下面是测试代码:
//赋值key
stringTemplate.set("test");
//根据key获取value的值
String value = stringTemplate.get();
System.out.println(key+"的值为:"+value);
//从 value 的下标开始截取字符串,从第一个参数开始,到第二个参数截止
// 第一个参数不能小于0,如果小于0,则取出来的是个空字符串,
// 第二个参数可以大于value的长度,这样,取出来的value就是完整的value,不会截取
String value1 = stringTemplate.get(0, 1);
System.out.println(key+"的值为:"+value1);
// 获取原来的value,并且进行替换
String modifyTest = stringTemplate.getAndSet("modifyTest");
System.out.println(key+"的值为:"+modifyTest);
String value3 = stringTemplate.get();
System.out.println(key+"的值为:"+value3);
//获取value的缓存时间,单位:秒 -1表示永不超时
Long expire = stringTemplate.getExpire();
System.out.println(key+"的超时时间:"+expire);
//获取key值
String key1 = stringTemplate.getKey();
System.out.println(key+"的key值为:"+key1);
//获取value的类型
DataType type = stringTemplate.getType();
System.out.println(value+"的类型为:"+type);
//获取 RedisOperations 接口实现对象
RedisOperations operations = stringTemplate.getOperations();
测试结果:
hexiaowu的值为:test
hexiaowu的值为:te
hexiaowu的值为:test
hexiaowu的值为:modifyTest
hexiaowu的超时时间:-1
hexiaowu的key值为:hexiaowu