博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(五)Spring中spring-data-redis的使用...
阅读量:6611 次
发布时间:2019-06-24

本文共 4986 字,大约阅读时间需要 16 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/54170891

前面已经写了四篇关于dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合的文章:

今天继续写一篇关于Spring中spring-data-redis的使用。

Redis是一种特殊的类型的数据库,它被称为一种key-value存储。key-value存储保存的是键值对。实际上,key-value存储于哈希Map有很大的相似。

spring data是一种面向模板的数据访问,能够在使用Redis的时候,为我们提供了帮助。于是就有了spring-data-redis。

1. spring-data-redis的简介

spring-data-redis包含了多个模板实现,用来完成Redis数据库的存取功能。创建spring-data-redis模板之前,我们首先需要一个Redis连接工厂,spring-data-redis提供了四个连接工厂供我们选择。

2.spring-data-redis所需要依赖

redis.clients
jedis
2.8.0
org.springframework.data
spring-data-redis
1.6.2.RELEASE

3. spring-data-redis的使用

3.1 连接到Redis

Redis连接工厂会生成到Redis数据库服务器的连接。spring-data-redis为四种Redis客户端实现了连接工厂:

  • JedisConnectionFactory
  • JredisConnectionFactory
  • LettuceConnectionFactory
  • SrpConnectionFactory

    具体选择哪一种取决于自己。

(1)创建redis.properties:

maxTotal=8#最大空闲时间maxIdle=8#最短空闲时间minIdle=0#最大的等待时间maxWaitMillis=6000#Redis的连接地址hostR=127.0.0.1#端口portR=6379

(2)创建spring-redis.xml

以上是我配置的jedisPoolConfig,jedisConnectionFactory,redisTemplate。

3.2 使用RedisTemplate

Redis连接工厂会生成到Redis key-value存储的连接(以RedisConnection的形式。)借助RedisConnection,可以存储和读取数据。

spring-redis-data以模板的形式提供了较好等级的数据访问方案。实际上,spring-data-redis提供了两个模板:

  • RedisTemplate
  • StringRedisTemplate

其中RedisTemplate使用两个类型进行了参数。第一个参数是key的类型,第二个参数是value的类型,而StringRedisTemplate是RedisTemplate的扩展,只关注String类型,也就是key和vlaue都是String类型。

3.2.1 RedisTemplate使用简单值

假设我们想通过RedisTemplate

public class UserRedisDaoImp extends AbstractBaseRedisTemplete
implements IUserRedisDao {
@Override public User findById(String key) { return (User) redisTemplate.opsForValue().get(key); } @Override public void saveUser(String key,User user) { redisTemplate.opsForValue().set(key, user); }}
3.2.2 RedisTemplate使用List值

使用List类型的value与之类似,只需要使用opForList()方法,

package com.lidong.core.user.dao;import java.util.List;import com.lidong.model.user.User;import com.lidong.util.AbstractBaseRedisTemplete;public class UserRedisDaoImp extends AbstractBaseRedisTemplete
implements IUserRedisDao {
@Override public List
getUserList(String key,long start,long end) { return redisTemplate.opsForList().range(key, 0, end); } @Override public Long addUserToUserList(String key, User user) { return redisTemplate.opsForList().leftPush(key, user); }}
3.2.3 RedisTemplate使用Set值

除了使用List类型和value类型,我们还可以使用opForSet()的方法操作Set,最为常用的的就是向Set中添加一个元素:

@Override    public void saveUser(String key,User user) {         redisTemplate.opsForSet().add(key, user);    }

在我们有多个Set,并对这些Set集合进行差、交、并的操作。

Set
difference = redisTemplate.opsForSet().difference("users1", "users2"); Set
union = redisTemplate.opsForSet().union("users1", "users2"); Set
intersect = redisTemplate.opsForSet().intersect("users1", "users2"); //我还可以移除Set中的元素 Long remove = redisTemplate.opsForSet().remove("user1", user);
3.2.4 RedisTemplete绑定到某个key上

我们可以将Value、List、Set等可以绑定到指定的key上。这些用个的不太多,但是也简单。这里就不具体写了。

3.2.5 构造AbstractBaseRedisTemplete
package com.lidong.util;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.data.redis.core.RedisTemplate;/** * 基础的RedisTemplete * @author lidong * @param 
* @date 2017-1-5 */public abstract class AbstractBaseRedisTemplete
implements ApplicationContextAware { protected RedisTemplate
redisTemplate; /** * @Description RedisTemplate * @param redisTemplate */ public void setRedisTemplate(RedisTemplate
redisTemplate) { this.redisTemplate = redisTemplate; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { @SuppressWarnings("unchecked") RedisTemplate
redisTemplate = applicationContext.getBean( "redisTemplate", RedisTemplate.class); setRedisTemplate(redisTemplate); }}

Spring-Data-Redis的使用基本最常用 的就是这三种类型value类型、List类型、Set类型。

你可能感兴趣的文章
Linux下常用的磁盘管理技术LVM
查看>>
Silverlight杂记之HTTP通信WebClient介绍
查看>>
动态路由协议之RIP配置详解
查看>>
(apache+tomcat集群+memcached番外篇)单台tomcat的session信息的2种持久化方式
查看>>
nginx1.9+做TCP代理(端口转发)
查看>>
Windows 2012 计划任务发送邮件
查看>>
Samba服务介绍及配置
查看>>
Android系统的开机画面显示过程分析(5)
查看>>
DataGrid Web Control 连载之四
查看>>
在Windows Server 2008上实现带宽控制---QoS
查看>>
Web Client Software Factory系列(1):初识与预备知识
查看>>
HTML元素的默认CSS设置介绍
查看>>
CSS-图片不变形设置
查看>>
Git异常:fatal: could not create work tree dir 'XXX': No such file or directory
查看>>
JavaScript:综合案例-表单验证
查看>>
GNU make manual 翻译(八十二)
查看>>
python批量下载图片的三种方法
查看>>
[项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-IIS...
查看>>
Android + eclipse +ADT安装完全教程
查看>>
[书友交流] <Autodesk 地理信息系统解决方案--FDO、MapGuide、AutoCAD Map 3D二次开发指南>读书交流贴...
查看>>