1.引入依赖

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.1.9.RELEASE</version>
</dependency> <dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>

2.配置(applicationContext.xml)

1.使用Spring配置JedisPoolConfig对象(连接池)

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!--最大空闲数-->
<property name="maxIdle" value="50"/>
<!--最大连接数-->
<property name="maxTotal" value="100"/>
<!--最大等待时间-->
<property name="maxWaitMillis" value="20000"/>
</bean>

2.为连接池配置工厂模型

<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!--Redis服务地址-->
<property name="hostName" value="localhost"/>
<!--端口号-->
<property name="port" value="6379"/>
<!--如果有密码则需要配置密码-->
<!--<property name="password" value="password"/>-->
<!--连接池配置-->
<property name="poolConfig" ref="poolConfig"/>
</bean>

3.配置RedisTemplate

<bean id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="connectionFactory"/>
</bean>

注:普通的连接根本没有办法直接将对象直接存入 Redis 内存中,我们需要替代的方案:将对象序列化(可以简单的理解为继承Serializable接口)。我们可以把对象序列化之后存入Redis缓存中,然后在取出的时候又通过转换器,将序列化之后的对象反序列化回对象,所有需要POJO对象实现Serializable接口

3.RedisTemplate基本使用

StringRedisTemplate与RedisTemplate

两者的关系是StringRedisTemplate继承RedisTemplate。

两者的数据是不共通的:

StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。

SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。

StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。

RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。

1.redisTemplate.opsForValue().set("student_1", student);

2.10秒后失效

void set(K key, V value, long timeout, TimeUnit unit);

redisTemplate.opsForValue().set("name","tom",10, TimeUnit.SECONDS);

3.用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始

void set(K key, V value, long offset);

使用:template.opsForValue().set("key","hello world");
template.opsForValue().set("key","redis", 6);
System.out.println(template.opsForValue().get("key"));
结果:hello redis

4.不存在才设置,设置成功返回true,失败返回false

Boolean setIfAbsent(K key, V value);

5.为多个键分别设置它们的值

void multiSet(Map<? extends K, ? extends V> m);

为多个键分别取出它们的值

List<V> multiGet(Collection<K> keys);

        Map<String,String> maps = new HashMap<String, String>();
maps.put("multi1","multi1");
maps.put("multi2","multi2");
maps.put("multi3","multi3");
template.opsForValue().multiSet(maps); List<String> keys = new ArrayList<String>();
keys.add("multi1");
keys.add("multi2");
keys.add("multi3");
template.opsForValue().multiGet(keys);

6.为多个键分别设置它们的值,如果存在则返回false,不存在返回true

Boolean multiSetIfAbsent(Map<? extends K, ? extends V> m);

7.设置键的字符串值并返回其旧值

T getAndSet(K key, T value);

8.如果key已经存在并且是一个字符串,则该命令将该值追加到字符串的末尾。

如果键不存在,则它被创建并设置为空字符串并追加,因此APPEND在这种特殊情况下将类似于SET。

Integer append(K key, String value);

9.截取key所对应的value字符串

String get(K key, long start, long end);

使用:
appendTest对应的value为Helloworld
System.out.println("*********"+template.opsForValue().get("appendTest",0,5));
结果:*********Hellow
使用:System.out.println("*********"+template.opsForValue().get("appendTest",0,-1));
结果:*********Helloworld
使用:System.out.println("*********"+template.opsForValue().get("appendTest",-3,-1));
结果:*********rld

10.返回key所对应的value值得长度

Long size(K key);

11.删除key对应的键值对

redisTemplate.opsForValue().getOperations().delete("key");

注:详情参见https://blog.csdn.net/ruby_one/article/details/79141940

Spring使用Redis的更多相关文章

  1. springMVC 缓存(入门 spring+mybaties+redis一)

    使用redis之前需要咋电脑上安装redis: 使用spring+mybaties+redis的本质是扩展类   org.apache.ibatis.cache.Cache:在我们自己扩展的Cache ...

  2. spring boot redis缓存JedisPool使用

    spring boot redis缓存JedisPool使用 添加依赖pom.xml中添加如下依赖 <!-- Spring Boot Redis --> <dependency> ...

  3. spring和redis的整合-超越昨天的自己系列(7)

    超越昨天的自己系列(7) 扯淡:  最近一直在慢慢多学习各个组件,自己搭建出一些想法.是一个涉猎的过程,慢慢意识到知识是可以融汇贯通,举一反三的,不过前提好像是研究的比较深,有了自己的见解.自认为学习 ...

  4. spring data redis RedisTemplate操作redis相关用法

    http://blog.mkfree.com/posts/515835d1975a30cc561dc35d spring-data-redis API:http://docs.spring.io/sp ...

  5. Spring boot配合Spring session(redis)遇到的错误

    背景:本MUEAS项目,一开始的时候,是没有引入redis的,考虑到后期性能的问题而引入.之前没有引用redis的时候,用户登录是正常的.但是,在加入redis支持后,登录就出错!错误如下: . __ ...

  6. 【Spring】Redis的两个典型应用场景--good

    原创 BOOT Redis简介 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化. ...

  7. spring mvc Spring Data Redis RedisTemplate [转]

    http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) ...

  8. Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解

    一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...

  9. Spring Data Redis—Pub/Sub(附Web项目源码)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...

  10. spring与redis集成之aop整合方案

    java使用redis缓存可以使用jedis框架,jedis操作简单,没有什么复杂的东西需要学习,网上资料很多,随便看看就会了. 将spring与redis缓存集成,其实也是使用jedis框架,只不过 ...

随机推荐

  1. 利用jion阻塞主进程结束

    import time from multiprocessing import Process def run1(): for i in range(5): print("sunck is ...

  2. python_异常

    异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常 程序停止执行并且提示错误信息 这个动作,我们通常称之为:抛出(raise) ...

  3. 记录常用的linux命令

    原文链接:https://www.cnblogs.com/suger43894/p/11024594.html 系统信息相关 date 显示系统日期 cat /proc/mounts 显示已加载的文件 ...

  4. rest_framework框架实现之(视图,路由,渲染器)

    一视图 一 在前面我们使用视图时继承的时APIview from rest_framework.response import Response from rest_framework.paginat ...

  5. springcloud feign增加熔断器Hystrix

    1.依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s ...

  6. 读取Properties

    package com.infotech.common.util; import java.io.FileNotFoundException; import java.io.IOException; ...

  7. Vue学习笔记【11】——Vue调试工具vue-devtools的安装步骤和使用

    1.fq安装 2.本地安装: Google浏览器 chrome://extensions/ ,打开扩展程序→打开开发者模式→加载已解压的扩展程序,选择解压后的扩展程序包即可.

  8. 前端agl分页的写法

    <!-- 分页组件开始 --> <script src="../plugins/angularjs/pagination.js"></script&g ...

  9. 【版本】Spring Cloud 版本

    Spring Cloud 版本 Spring Cloud没有数字版本号,而是对应一个开发代号 Cloud代号 Boot版本(train) Boot版本(tested) lifecycle Angle ...

  10. PHP base64_decode+gzinflate压缩和解密代码图文教程

    今天碰到的这个问题,是我在更换一个WP主题是遇到.目前的情况如下,我想要把如下的超链接去掉,后台代码找到了在sidebar1.php文件中. 打开此文件发现是一长串的字符: 经过百度.google后, ...