我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis如何在Spring中使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis如何在Spring中使用

本篇文章为大家展示了Redis如何在Spring中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Eclipse工程结构

如下图为我的示例工程的结构图,采用Maven构建。其中需要集成Spring,因此需要beans.xml文件配置spring的依赖注入,redis.properties配置连接服务器的配置信息。

Redis如何在Spring中使用

其中工程中beans.xml和redis.properties文件直接放在了根目录,有需要的读者可以放到resource目录中。

POM依赖

如下为示例POM依赖,Spring集成redis需要依赖的包为:jedis包,spring-context模块及依赖的包,spring-data-redis模块包,spring-test包用于JUnit测试,pom.xml文件内容如下:

<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelversion>4.0.0</modelversion>   <groupid>com.test</groupid>  JavaTest</artifactid>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>   <name>JavaTest</name>  <url>https://maven.apache.org</url>   <properties>    <project.build.sourceencoding>UTF-8</project.build.sourceencoding>  </properties>   <dependencies>    <dependency>      <groupid>junit</groupid>      junit</artifactid>      <version>4.12</version>      <scope>test</scope>    </dependency>    <dependency>      <groupid>redis.clients</groupid>      jedis</artifactid>      <version>2.5.1</version>    </dependency>    <dependency>      <groupid>org.springframework</groupid>      spring-context</artifactid>      <version>4.2.6.RELEASE</version>      <scope>runtime</scope>    </dependency>    <dependency>      <groupid>org.springframework</groupid>      spring-test</artifactid>      <version>4.2.6.RELEASE</version>      <scope>runtime</scope>    </dependency>    <dependency>      <groupid>org.springframework.data</groupid>      spring-data-redis</artifactid>      <version>1.7.2.RELEASE</version>    </dependency>  </dependencies></project>

Spring配置

Spring配置文件beans.xml的配置如下:

<!--?xml version="1.0" encoding="UTF-8"?--> <beans xmlns="https://www.springframework.org/schema/beans" xmlns:aop="https://www.springframework.org/schema/aop" xmlns:context="https://www.springframework.org/schema/context" xmlns:jee="https://www.springframework.org/schema/jee" xmlns:p="https://www.springframework.org/schema/p" xmlns:tx="https://www.springframework.org/schema/tx" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="       https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd       https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">   <!-- 加载classpath下的Redis配置文件 -->  <context:property-placeholder location="classpath:redis.properties">   <bean class="redis.clients.jedis.JedisPoolConfig" id="poolConfig">     <property name="maxIdle" value="${redis.maxIdle}">    <property name="testOnBorrow" value="${redis.testOnBorrow}">  </property></property></bean>    <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" id="connectionFactory" p:host-name="${redis.host}" p:password="${redis.pass}" p:pool-config-ref="poolConfig" p:port="${redis.port}">    <!-- spring提供的模板类 -->  <bean class="org.springframework.data.redis.core.StringRedisTemplate" id="redisTemplate">     <property name="connectionFactory" ref="connectionFactory">  </property></bean>   <bean class="com.redis.test.UserDao" id="userDao">    <property name="redisTemplate" ref="redisTemplate">   </property></bean> </bean></context:property-placeholder></beans>

在beans.xml配置文件中,需要先加载redis.properties文件。

Redis配置信息

Redis的配置信息在redis.properties文件中配置:

# Redis地址和端口和连接密码redis.host=localhostredis.port=6379redis.pass= redis.maxIdle=300redis.testOnBorrow=true

此示例,连接Redis服务器时没有设置连接密码,因此不用填值。

Java代码

User.java

package com.redis.test;import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID = 3409768855488864675L;private String id;private String name;private String password;public User() {}public User(String id, String name, String password) {this.id = id;this.name = name;this.password = password;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String toString() {return "User [id=" + id + ", name=" + name + ", password=" + password + "]";}}

AbstractRedisBaseDao.java

package com.redis.test;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.RedisSerializer;public abstract class AbstractRedisBaseDao<k, v=""> {  protected RedisTemplate<k, v=""> redisTemplate;public RedisTemplate<k, v=""> getRedisTemplate() {return redisTemplate;}public void setRedisTemplate(RedisTemplate<k, v=""> redisTemplate) {this.redisTemplate = redisTemplate;}protected RedisSerializer<string> getRedisSerializer() {return redisTemplate.getStringSerializer();}}

IUserDao.java

package com.redis.test;import java.util.List;public interface IUserDao {Boolean add(User user);Boolean add(List<user> list);void delete(String key);void delete(List<string> keys);Boolean update(User user);User get(String keyId);}

UserDao.java

package com.redis.test;import java.util.List;import org.springframework.dao.DataAccessException;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisCallback;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.util.Assert;public class UserDao extends AbstractRedisBaseDao<string, user=""> implements IUserDao {  public Boolean add(final User user) {Boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {public Boolean doInRedis(RedisConnection connection) throws DataAccessException {RedisSerializer<string> serializer = getRedisSerializer();byte[] key = serializer.serialize(user.getId());// 将ID序列化成keybyte[] value = serializer.serialize(user.getName());return connection.setNX(key, value);}});return result;}public Boolean add(final List<user> list) {Assert.notEmpty(list);Boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {public Boolean doInRedis(RedisConnection connection) throws DataAccessException {RedisSerializer<string> serializer = getRedisSerializer();for (int i = 0; i < list.size(); i++) {User user = list.get(i);byte[] key = serializer.serialize(user.getId());// 将ID序列化成keybyte[] value = serializer.serialize(user.getName());connection.setNX(key, value);}return true;}}, false, true);return result;}public void delete(String key) {redisTemplate.delete(key);}public void delete(List<string> keys) {redisTemplate.delete(keys);}public Boolean update(final User user) {String key = user.getId();if(get(key) == null) {throw new NullPointerException("数据行不存在,key = " + key);}Boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {public Boolean doInRedis(RedisConnection connection) throws DataAccessException {RedisSerializer<string> serializer = getRedisSerializer();byte[] key = serializer.serialize(user.getId());// 将ID序列化成keybyte[] value = serializer.serialize(user.getName());connection.set(key, value);return true;}});return result;}public User get(final String keyId) {User user = redisTemplate.execute(new RedisCallback<user>() {public User doInRedis(RedisConnection connection) throws DataAccessException {RedisSerializer<string> serializer = getRedisSerializer();byte[] key = serializer.serialize(keyId);byte[] value = connection.get(key);if(value == null) {return null;}String name = serializer.deserialize(value);return new User(keyId, name, null);}});return user;}}

RedisTest.java(JUnit测试类)

package com.redis.test;import java.util.ArrayList;import java.util.List;import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;import org.springframework.util.Assert;@ContextConfiguration(locations={"classpath*:beans.xml"})public class RedisTest extends AbstractJUnit4SpringContextTests {@Autowired  private IUserDao userDao;@Test  public void testAddUser() {User user = new User("user1", "password1", null);Boolean result = userDao.add(user);Assert.isTrue(result);System.out.println("添加结果:" + result);}@Test  public void testAddUsers1() {List<user> list = new ArrayList<user>();for (int i = 10; i < 50000; i++) {User user = new User();user.setId("user" + i);user.setName("password" + i);list.add(user);}long begin = System.currentTimeMillis();for (User user : list) {userDao.add(user);}System.out.println(System.currentTimeMillis() - begin);}@Test  public void testAddUsers2() {List<user> list = new ArrayList<user>();for (int i = 50000; i < 100000; i++) {User user = new User();user.setId("user" + i);user.setName("password" + i);list.add(user);}long begin = System.currentTimeMillis();Boolean result = userDao.add(list);Assert.isTrue(result);System.out.println(System.currentTimeMillis() - begin);}@Test  public void testUpdate() {User user = new User();user.setId("user1");user.setName("new_password");Boolean result = userDao.update(user);Assert.isTrue(result);}@Test  public void testDelete() {String key = "user1";userDao.delete(key);}@Test  public void testDeletes() {List<string> list = new ArrayList<string>();for (int i = 0; i < 10; i++) {list.add("user" + i);}userDao.delete(list);}@Test  public void testGetUser() {String id = "user1";User user = userDao.get(id);Assert.notNull(user);System.out.println(user);}}

上述内容就是Redis如何在Spring中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis如何在Spring中使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis如何在Spring中使用

本篇文章为大家展示了Redis如何在Spring中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Eclipse工程结构如下图为我的示例工程的结构图,采用Maven构建。其中需要集成Spring,
2023-05-30

Redis数据库如何在Spring Boot中使用

本篇文章为大家展示了Redis数据库如何在Spring Boot中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。redis介绍Redis是目前业界使用最广泛的内存数据存储。相比memcached
2023-05-31

在Spring Boot中使用注解如何实现Redis 缓存

在Spring Boot中使用注解如何实现Redis 缓存?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、创建 Caching 配置类RedisKeys.Javapackag
2023-05-31

transactionAttributes如何在Spring中使用

本篇文章给大家分享的是有关transactionAttributes如何在Spring中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体方法如下:2023-05-31

FactoryBean如何在Spring中使用

FactoryBean如何在Spring中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。spring FactoryBean 是创建 复杂的bean,一般的bean 直接
2023-05-31

Sentinel如何在Redis中使用

今天就跟大家聊聊有关Sentinel如何在Redis中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、sentinel monitor用法:sentinel monitor m
2023-06-14

redis在java中如何使用

本文介绍了在Java中使用Redis的方法,包括建立连接、设置和获取键值、使用不同数据类型、事务处理、管道操作和订阅功能。此外,文中也提到了使用Redis的最佳实践,如连接池、批量命令、键过期时间和实例监控。通过本文,读者可以全面了解如何在Java应用程序中集成Redis,以提高性能和可扩展性。
redis在java中如何使用
2024-04-02

redis如何在java中使用

本教程详细介绍了如何在Java中使用RedisAPI,包括连接到服务器、存储和检索值、使用数据结构(列表、集合、哈希表、有序集合)、发布和订阅消息、事务、管道以及高级功能(Lua脚本、连接池、哨兵监控、集群模式)。通过这些功能,Java开发者可以轻松地将Redis集成到他们的应用程序中,构建健壮且可扩展的解决方案。
redis如何在java中使用
2024-04-02

在Spring-Session使用Redis如何实现共享session

这期内容当中小编将会给大家带来有关在Spring-Session使用Redis如何实现共享session,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、添加依赖
2023-05-31

Lombok如何在Spring Boot中使用

本篇文章给大家分享的是有关Lombok如何在Spring Boot中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。springboot是什么springboot一种全新的编
2023-06-14

JdbcTemplate如何在spring boot中使用

JdbcTemplate如何在spring boot中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Spring对数据库的操作在jdbc上面做了深层次的封装
2023-05-31

filter如何在Spring Boot中使用

今天就跟大家聊聊有关filter如何在Spring Boot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。过滤器(Filter)的注册方法和 Servlet 一样,有两种方式:
2023-05-31

Druid如何在Spring Boot中使用

这篇文章给大家介绍Druid如何在Spring Boot中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSour
2023-05-31

如何在spring boot中使用utf8mb4

这篇文章给大家介绍如何在spring boot中使用utf8mb4,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。spring: datasource: driver-class-name: net.sf.log4jd
2023-06-06

如何在Spring Boot中使用Webflux

这篇文章主要介绍“如何在Spring Boot中使用Webflux”,在日常操作中,相信很多人在如何在Spring Boot中使用Webflux问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在Spring
2023-06-02

如何在Spring与Spring Boot项目中使用Dubbo

这篇文章给大家介绍如何在Spring与Spring Boot项目中使用Dubbo,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、在Spring中使用Dubbo1、Maven依赖
2023-05-30

RedisTemplate方法如何在spring中使用

本篇文章给大家分享的是有关RedisTemplate方法如何在spring中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需要的jar包 spring-data-Redis
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录