[Redis学习笔记]-Spring 操作Redis
来源:互联网 发布:网络语音对讲系统 编辑:程序博客网 时间:2024/06/06 00:44
Spring 操作Redis
Spring操作Redis的主要基于RedisTemplate的操作,它是对Jedis的封装。
Maven新建一个Java工程
不会maven的可以百度一下。
引入依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.12.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.12.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.12.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>4.3.12.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.12.RELEASE</version></dependency><dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.8.RELEASE</version></dependency><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version></dependency><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope></dependency>
applicationContext.xml
Spring 配置文件
<!-- 指定扫描bean所在的根目录 --> <context:component-scan base-package="me.spring.test" /> <!-- 使用注解注册spring bean --> <context:annotation-config /> <!-- 导入redis配置文件 --> <context:property-placeholder location="classpath:redis.properties" /> <!-- redis连接池配置 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxWaitMillis" value="${redis.maxWait}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean> <!-- redis连接工厂配置 --> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${redis.host}" /> <property name="port" value="${redis.port}" /> <property name="password" value="${redis.pass}" /> <property name="timeout" value="${redis.timeout}"/> <property name="poolConfig" ref="poolConfig" /> </bean> <bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" /> <!-- redisTemplate --> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="connectionFactory" /> <property name="keySerializer" ref="stringRedisSerializer" /> <property name="hashKeySerializer" ref="stringRedisSerializer" /> </bean>
redis.properties
Redis连接配置
redis.host=localhostredis.port=6379redis.pass=redis.maxIdle=600redis.maxActive=500redis.maxWait=1000redis.timeout=0redis.testOnBorrow=true
实体User
public class User { private Integer id; private String username; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + "]"; }}
测试
RedisTemplateTest
@RunWith(SpringRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class RedisTemplateTest { @Autowired private RedisTemplate<String, String> redisTemplate; // 判断key是否存在 @Test public void redisTemplateHasKeyTest() { System.out.println(redisTemplate.hasKey("name")); } // 设置过期 @Test public void redisTemplateExpireTest() { redisTemplate.expire("name", 10, TimeUnit.SECONDS); } // 删除key @Test public void redisTemplateDeleteTest() { redisTemplate.delete("name"); } // 测试 ValueOperations // ValueOperations 是对应Redis string类型 @Test public void valueOperationsTest() { ValueOperations<String, String> opsForValue = redisTemplate.opsForValue(); opsForValue.set("name", "zhangsan"); String string = opsForValue.get("name"); System.out.println(string); } // 测试 HashOperations // HashOperations 是对应hash 类型 @Test public void hashOperationsTest() { HashOperations<String, Object, Object> opsForHash = redisTemplate.opsForHash(); opsForHash.put("user", "name", "zhangsan"); opsForHash.put("user", "age", "20"); System.out.println(opsForHash.entries("user")); } // 测试 ListOperations // ListOperations 是对应List 类型 @Test public void listOperationsTest() { ListOperations<String, String> opsForList = redisTemplate.opsForList(); opsForList.leftPushAll("color", "red", "blue", "green"); opsForList .range("color", 0, 10) .stream() .forEach(System.out::println); } @Test public void setOperationsTest() { SetOperations<String, String> opsForSet = redisTemplate.opsForSet(); opsForSet.add("pet", "dog"); opsForSet.add("pet", "cat"); opsForSet.add("pet", "fish"); opsForSet .members("pet") .stream() .forEach(System.out::println); } @Test public void zSetOperationsTest() { ZSetOperations<String, String> opsForZSet = redisTemplate.opsForZSet(); opsForZSet.add("zsetkey", "zsetvalue1", 1); opsForZSet.add("zsetkey", "zsetvalue2", 1); opsForZSet.add("zsetkey", "zsetvalue3", 1); opsForZSet.add("zsetkey", "zsetvalue4", 1); opsForZSet .rangeByScore("zsetkey", 0, 100) .stream() .forEach(System.out::println); }}
OperationsTest
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class OperationsTest { @Autowired private RedisTemplate redisTemplate; // 注入RedisTemplate为ValueOperations @Resource(name = "redisTemplate") private ValueOperations<String, String> opsForValue; // 注入RedisTemplate为ListOperations @Resource(name = "redisTemplate") private ListOperations<String, String> opsForList; // 注入RedisTemplate为HashOperations @Resource(name = "redisTemplate") private HashOperations<String, String, String> opsForHash; // 注入RedisTemplate为SetOperations @Resource(name = "redisTemplate") private SetOperations<String, String> opsForSet; // 注入RedisTemplate为ZSetOperations @Resource(name = "redisTemplate") private ZSetOperations<String, String> opsForZSet; @Test public void hashOperationsTest() { opsForHash.put("key1", "hkey", "hvalue"); String value = opsForHash.get("key1", "hkey"); System.out.println(value); } // 使用BeanUtilsHashMapper转换实体bean,BeanUtilsHashMapper依赖commons-beanutils @Test public void beanUtilsHashMapperTest() { // put BeanUtilsHashMapper<User> mapper = new BeanUtilsHashMapper<>(User.class); User user = new User(); user.setId(1); user.setUsername("admin"); user.setPassword("123456"); Map<String, String> hash = mapper.toHash(user); opsForHash.putAll("user", hash); // get Map<String, String> entries = opsForHash.entries("user"); User user2 = mapper.fromHash(entries); System.out.println(user2); } // 使用Jackson2HashMapper 转换实体bean @Test public void jackson2HashMapperTest() { //put redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); Jackson2HashMapper mapper = new Jackson2HashMapper(true); HashOperations<String, String, Object> opsForHash = redisTemplate.opsForHash(); User user = new User(); user.setId(1); user.setUsername("admin"); user.setPassword("123456"); Map<String, Object> hash = mapper.toHash(user); opsForHash.putAll("user", hash); //get Map<String, Object> entries = opsForHash.entries("user"); User getUser = (User) mapper.fromHash(entries); System.out.println(getUser); } @Test public void valueOperationsTest() { opsForValue.set("vkey", "vvalue"); String string = opsForValue.get("vkey"); System.out.println(string); } //测试 Jackson2JsonRedisSerializer,它使用Jackson将实体bean转换为json @Test public void jackson2JsonRedisSerializerTest() { //set redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class)); ValueOperations<String, User> opsForValue = redisTemplate.opsForValue(); User user = new User(); user.setId(1); user.setUsername("admin"); user.setPassword("123456"); opsForValue.set("user", user); // get User getUser = opsForValue.get("user"); System.out.println(getUser); } @Test public void listOperationsTest() { opsForList.leftPush("list", "value1"); opsForList.leftPushAll("list", "value2", "value3"); opsForList .range("list", 0, 10) .stream() .forEach(System.out::println); } @Test public void setOperationsTest() { opsForSet.add("set1", "value1"); opsForSet.add("set1", "value2"); opsForSet.add("set1", "value3"); opsForSet .members("set1") .stream() .forEach(System.out::println); } @Test public void testZSetOperationsWrite() { opsForZSet.add("zsetkey", "zsetvalue1", 1); opsForZSet.add("zsetkey", "zsetvalue2", 1); opsForZSet.add("zsetkey", "zsetvalue3", 1); opsForZSet.add("zsetkey", "zsetvalue4", 1); opsForZSet .rangeByScore("zsetkey", 0, 100) .stream() .forEach(System.out::println); }}
以上均测试通过。
阅读全文
0 0
- [Redis学习笔记]-Spring 操作Redis
- Redis学习笔记-Jedis操作Redis
- python操作redis学习笔记
- 学习笔记:Python操作Redis
- spring data redis 操作redis
- spring data redis 操作redis
- Redis学习笔记(三)java redis 基本操作
- Redis学习笔记二:Redis的常用操作命令
- Redis学习笔记二:Redis的常用操作命令
- redis整合spring配置--学习笔记
- spring-boot-starter-redis学习笔记
- Spring Boot 学习笔记--整合Redis
- redis + spring 基本操作
- spring-data-redis 操作
- Jedis+Spring操作Redis
- 【学习笔记】C++操作redis库
- redis学习笔记二(常规操作)
- Redis学习笔记-Redis安装
- vue data恢复初始化数据
- nginx recv() failed 错误,php "zend_mm_heap corrupted\n"错误
- linux常用命令
- Selenium IDE 和 FireFox 兼容问题
- getChildFragmentManager
- [Redis学习笔记]-Spring 操作Redis
- CentOS6下Apache、MySql、PHP安装
- JAVA_50经典编程案例之题目:809*??=800*??+9*??+1其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
- POJ2955
- jsp自定义标签
- 基于tcp协议的socket通信阻塞问题
- 开源许可协议GPL、APL、BSD、LGPL、MIT等的区别
- 实录:余凯、颜水成、梅涛、张兆翔、山世光同台讨论 “深度学习的能与不能”
- Spring官网下载各版本jar包