如下,均为本身花费时间测试跟描写,欢迎转载,转载请标明出处跟做者,我不但愿本身的辛苦劳动被转载并且还不标明做者跟出处,请尊重做者的劳动成果
并且,官方文档,以及源码,并无方法注释,在文章最下面有我的对方法描述,都是我的描述,可能会有偏差,以及描述不当的地方,请见谅!
1.个人项目是maven项目,最近由于要用到,先引进下面两个包 java
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> </dependency>
2. 配置redis连接,由于spring-data集成了reids,咱们只须要在properties里面配置数据库链接等就OK了redis
spring.redis.host=redisIP spring.redis.port=端口 spring.redis.pool.max-active=链接数 spring.redis.pool.max-idle=最大链接数 spring.redis.pool.min-idle=最小链接数 spring.redis.pool.max-wait=超时时间
3.StringRedisTemplate 是对redis数据库操做的封装模板,下图,是咱们要使用模板的类关系spring
4.下面上测试代码咯!数据库
------------------------------分割线-------------------------------------------缓存
1.先获取方法模板,可使用@autowired 自动注入app
String key = "hexiaowu"; /** * 先获取redis对value的操做对象,须要先设定key */ BoundValueOperations<String, String> stringTemplate = redisTemplate.boundValueOps(key);
2.对value操做的模板,有不少方法,咱们下面一个一个来测试maven
set 方法spring-boot
有三个重载的方法,分别是干吗的呢,咱们来测试下吧测试
//赋值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);
下面是测试结果:spa
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<String, String> operations = stringTemplate.getOperations();
测试结果:
hexiaowu的值为:test hexiaowu的值为:te hexiaowu的值为:test hexiaowu的值为:modifyTest hexiaowu的超时时间:-1 hexiaowu的key值为:hexiaowu test的类型为:STRING
一些其余方法测试,就直接贴测试代码了
//赋值value stringTemplate.set("1"); //设置 key的缓存时间 // 能够先添加对应的value,而后在设置缓存时间 Boolean expire = stringTemplate.expire(1, TimeUnit.DAYS); System.out.println(key+"设置缓存时间是否成功:"+expire); //获取缓存时间 Long expire1 = stringTemplate.getExpire(); System.out.println(expire1); //设置具体的到期时间,而且返回是否设置成功,例如,设定当天8点,8点后就会自动销毁 Boolean expireTime = stringTemplate.expireAt(new Date()); System.out.println("是否设置成功:"+expireTime); //获取剩余过时时间 Long expire3 = stringTemplate.getExpire(); System.out.println("剩余到期时间:"+expire3); //删除key的到期时间,而且返回是否删除成功 Boolean persist = stringTemplate.persist(); System.out.println("删除key的缓存时间是否成功:"+persist); //获取剩余过时时间 Long expire2 = stringTemplate.getExpire(); System.out.println("key的缓存时间为"+expire2); String value = stringTemplate.get(); System.out.println("原来的value="+value+",长度为:"+value.length()); //在value值的基础上进行追加添加,而且返回新的字符串长度 Integer addComment = stringTemplate.append("2"); String s = stringTemplate.get(); System.out.println("新的value="+s+",新的字符串长度为"+addComment); String value1 = stringTemplate.get(); System.out.println("原来的value="+value1); //若是value 是number类型,增长value的值,如 12变为 12+param,而且返回新的value // 方法重载,能够传递2中参数,一个是 long还有一个是double,分别返回对应参数的类型 value Long increment = stringTemplate.increment(1); System.out.println("value增长参数后的值为:"+increment); String s1 = stringTemplate.get(); System.out.println("新的value="+s1); //获取value的长度 Long size = stringTemplate.size(); System.out.println("value的长度为"+size); //删除key redisTemplate.delete(key); //若是key没有设置value的话,那么参数设置为value Boolean asd = stringTemplate.setIfAbsent("123"); System.out.println("新的value="+stringTemplate.get()); System.out.println("旧的key为:"+stringTemplate.getKey()); //替换key的名称 stringTemplate.rename("newhexiaowu"); System.out.println("新的key为:"+stringTemplate.getKey());
接下来就是测试结果:
hexiaowu设置缓存时间是否成功:true 86400 是否设置成功:true 剩余到期时间:36 删除key的缓存时间是否成功:true key的缓存时间为-1 原来的value=1,长度为:1 新的value=12,新的字符串长度为2 原来的value=12 value增长参数后的值为:13 新的value=13 value的长度为2 新的value=123 旧的key为:hexiaowu 新的key为:newhexiaowu
以上就是本人测试的一些结果,可能会有一些出入什么的,欢迎指正
BoundValueOperations 接口文档,由于官方文档并无对方法的描述,源码里面也没有注释,因此在下面增长一份方法做用描述.方法中的 V,K均为String,你们能够收藏文章保存,之后忘了,能够进行查阅
方法名 | 方法描述 |
void set(V value) | 设定key对应的vlaue值 |
void set(V value,long offset) | 将value值从第offset位开始替换 |
void set(V value, long timeout, TimeUnit unit) | 设置value的超时时间,timeout为数字,unit为单位,例如天,小时等 |
Boolean setIfAbsent(V value) | 判断key是否有对应的value,若是有,则返回false,若是没有,添加,返回true |
V get() | 返回key对应的value |
String get(long start, long end) | 从start开始,到end结束,截取value的值 |
V getAndSet(V value) | 替换value的值,而且返回value的旧值 |
Long increment(long delta) | 若是value是数字类型的字符串,那么增长delta,而且返回新的value |
Double increment(double delta) | 若是value是数字类型的字符串,那么增长delta,而且返回新的value |
Integer append(String value) | 在value值后面进行添加,而且返回新value的长度 |
Long size() | 返回value的长度 |
Boolean expire(long var1, TimeUnit var3) | 设置key的缓存时间,var1为数字,unit为单位,例如天,小时等,返回是否设置成功 |
Boolean expireAt(Date var1) | 设置key的具体到期时间,而且返回是否设置成功 |
Long getExpire() | 返回key的剩余缓存时间,单位:秒 |
K getKey() | 返回key的名称 |
DataType getType() | 获取key的类型 |
Boolean persist() | 删除key的缓存时间 |
void rename(K var1) | 修改key的名称 |
上面就是我本身测试的一些方法,下次测试对redis对List,Set等集合的操做.
若是以为好,请回复下,谢谢,
欢迎转载,请注明出处跟做者,谢谢!