`
qieyi28
  • 浏览: 157512 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

redis boundValueOps 方法操作解释

 
阅读更多

1.我的项目是maven项目,最近因为要用到,先引进下面两个包

 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>1.5.2.RELEASE</version>
</dependency>

 

 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数据库操作的封装模板,下图,是我们要使用模板的类关系

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
      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());
 接下来就是测试结果:
     exiaowu设置缓存时间是否成功: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原子操作示例

    分布式Redis原子操作示例,近期项目中遇到分布式项目中多节点大并发操作redis同一个key。此案例利用java调用LUA脚本实现redis操作的原子性。分享出来大家参考。

    Java操作Redis实例,操作封装

    有了连接池,我们就可以编写一系列的Redis操作方法,封装在自定义的RedisUtil工具类中。例如,设置键值对的方法: ```java public class RedisUtil { private static JedisPool jedisPool; static { jedisPool ...

    Redis,redis封装核心方法

    Redis常用方法封装核心类;对象序列化和反序列化;RedisSession 用于微信分部署session操作;Redis数据源操作接口;商品Redis 存储查询 针对redis缓存技术进行了封装,对象类型存贮封装了序列化,redis穿透的处理。

    redis工具方法万能put

    总的来说,"redis工具方法万能put"是一个旨在简化Redis操作的实用工具,通过它可以快速地在项目中实现数据的存储,提高开发效率,而无需深入学习和使用底层客户端库。但为了充分利用Redis的所有功能和优化性能,...

    redismanager redis操作工具

    **Redis Manager:高效便捷的Redis操作工具** Redis是一款开源、高性能、基于键值对的数据存储系统,常被用作数据库、缓存和消息中间件。在处理大量数据和需要高速读写操作的场景中,Redis因其优秀的性能表现而备受...

    Laravel Redis操作大全

    Laravel Redis操作大全提供了Redis操作的详细介绍,涵盖了基本的set/get操作、setex存储带存储时效的记录、add操作、getset操作、incrby/incr/decrby/decr操作、exists检测操作、type类型检测、append连接操作、...

    REDIS_redis的工具包_redisinlabview_labviewredis_labview调用redis_redis

    例如,`Redis_Example1.vi`和`Redis_Example2.vi`可能包含了不同的使用示例,展示了如何使用这些VI执行不同的Redis操作。 ### LabVIEWRedis `labviewredis`工具包同样是为LabVIEW设计的,用于与Redis集成。它可能...

    c++ 操作redis数据库

    在C++中操作Redis,可以充分利用C++的灵活性和Redis的高效性,为应用程序提供强大的数据支持。 首先,`rediscommand.cpp`可能包含了C++与Redis交互的命令实现。在C++中操作Redis,通常会使用一个库来简化与Redis...

    WPF操作Redis简单实例

    例如,使用`StringSet`和`StringGet`方法操作字符串,`HashSet`和`HashGet`操作哈希等。 3. **发布/订阅模式**:Redis支持发布/订阅模式,C#客户端可以创建`Subscription`对象,订阅特定频道并接收消息。 4. **键...

    C#操作Redis明细内容 C#调用redis c#使用redis业务 C# Redis操作类 C#中Redis封装的类 C#

    谈下你对 Redis 的了解? 1)Redis是一种基于键值对的NoSQL数据库(非关系...包括c#引用的包,操作类,包括操作List,Hash、SortedSet等全有了 更多请查阅 https://blog.csdn.net/weijia3624/article/details/130691865

    redis常用方法.txt

    - **解释**: 上述示例演示了如何使用 Redis 进行列表操作。例如,通过 `lpush` 和 `rpush` 可以向列表的头部或尾部添加元素。`lpop` 用于移除并返回列表的第一个元素。`lsize` 和 `llen` 命令用于获取列表的长度。`...

    redis的基本操作命令.docx

    Redis 基本操作命令详解 Redis 是一个基于键值对的 NoSQL 数据库,具有高性能、低延迟和高可扩展性的特点。Redis 提供了多种数据类型,如字符串、哈希、列表、集合、有序集合等,并支持事务、发布订阅、 Lua 脚本等...

    单点redis及集群redis部署方法

    单点redis及集群redis部署方法

    windows 下安装redis 并用python操作redis

    在Windows环境下安装Redis并使用Python进行操作,是一个常见的任务,特别是在开发和测试环境中。下面将详细介绍这个过程,包括Redis的安装、配置、启动,以及如何使用Python的redis库与Redis服务器进行交互。 首先...

    redis使用基本方法

    1. redis 1. 概念 2. 下载安装 3. 命令操作 1. 数据结构 4. 持久化操作 5. 使用Java客户端操作redis

    C# StackExchange.Redis 操作封装类库

    C# StackExchange.Redis 操作封装类库,分别封装了Redis五大数据结构(String,Hash,List,Set,ZSet)的增删改查的操作方法,支持Async异步操作。​支持Redis分库操作。支持信息队列操作。 带有单元测试,为每个...

    java操作redis.docx

    Java 操作 Redis 是使用 Java 语言来访问和操作 Redis 数据库的方法。Redis 是一个高性能的 NoSQL 数据库,使用 Java 语言来操作它可以提高开发效率和性能。本文档将详细介绍使用 Java 操作 Redis 的方法,包括基本...

    thinkphp5默认redis缓存新增方法

    这里说明下,这个不是增加redis扩展,而是在默认thinkPHP5默认的redis方法上新增其他的方法,现在TP5redis的方法太少了,只有基本的设置取值,连list的方法都没有,这里主要就是针对这种情况新增新的方法,如消息...

    redis集群详细操作1

    【Redis 集群详细操作1】 Redis 是一个高性能的键值对数据库,由Salvatore Sanfilippo开发,采用C语言编写,并以开源形式发布。其核心特性在于支持多种键值数据类型,包括字符串、散列、列表、集合和有序集合,这些...

    windows下redis操作

    在Windows环境下操作Redis,需要考虑系统兼容性,因为Redis官方主要针对Linux发行版进行优化,但在Windows上也有相应的实现。本教程将深入探讨如何在Windows下安装和使用Redis。 首先,下载Redis的Windows版本。在...

Global site tag (gtag.js) - Google Analytics