Redis之通过RedisTemplate对象访问Redis
2020-04-01 18:49
681 查看
Redis之通过RedisTemplate对象访问Redis
spring框架中
首先导入依赖
<!--jedis依赖--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.1</version> </dependency> <!--jedis模板--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>2.1.10.RELEASE</version> </dependency> <!--用于对象转为json字符串保存--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.2</version> </dependency>
配置application.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置连接池--> <bean id="config" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxWaitMillis" value="2000"></property> <property name="testWhileIdle" value="true"></property> <property name="testOnReturn" value="false"></property> <property name="testOnCreate" value="false"></property> <property name="testOnBorrow" value="false"></property> <property name="maxIdle" value="20"></property> <property name="minIdle" value="10"></property> </bean> <!--配置连接工厂--> <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" id="factory" p:usePool="true" p:hostName="192.168.31.14" p:port="6666" p:database="0" p:password="123456" p:poolConfig-ref="config"> </bean> <!--RedisTemplate--> <bean class="org.springframework.data.redis.core.RedisTemplate" id="template"> <property name="connectionFactory" ref="factory"></property> <!--String key的序列化方式采用字符串的方式进行序列化 --> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean> </property> <property name="valueSerializer"> <!--<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>--> <!--value采用json格式进行序列化--> <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"></bean> </property> <property name="hashValueSerializer"> <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"></bean> </property> <property name="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean> </property> </bean> </beans>
测试类
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(value = "classpath:application.xml") public class AppTest { @Autowired private RedisTemplate redisTemplate; @Test public void testStr() { //默认使用的是JDK序列化的编码 redisTemplate.opsForValue().set("username", "hello"); String result = (String) redisTemplate.opsForValue().get("username"); System.out.println(result); redisTemplate.opsForValue().set("age", 20); System.out.println(redisTemplate.opsForValue().increment("age")); } @Test public void testEmp() { Emp emp = new Emp(1001, "hello", new Date()); redisTemplate.opsForValue().set("emp:" + emp.getEmpno(), emp); Emp result = (Emp) redisTemplate.opsForValue().get("emp:1001"); System.out.println(result.getEname() + ":" + result.getHiredate()); } @Test public void testAddEmps() { List emps = new ArrayList<>(); for (int i = 0; i < 10; i++) { Emp emp = new Emp(i, "hello" + i, new Date()); emps.add(emp); } redisTemplate.opsForValue().set("emps", emps); List<Emp> list = (List<Emp>) redisTemplate.opsForValue().get("emps"); for (Emp emp : list) { System.out.println(emp.getEname()); } } @Test public void testHash() { redisTemplate.opsForHash().put("emp", "ename", "张三"); String ename = (String) redisTemplate.opsForHash().get("emp", "ename"); System.out.println(ename); RedisOperations<String, String> redisOperations = redisTemplate.opsForHash().getOperations(); String empName = redisOperations.boundValueOps("ename").get(); System.out.println(empName); Map<String, Object> result = redisTemplate.opsForHash().entries("emp"); for (String key : result.keySet()) { System.out.println(key + ":" + result.get(key)); } Emp emp = new Emp(1001, "张三", new Date()); Map empMap = new HashMap(); empMap.put("ename", emp.getEname()); empMap.put("empno", emp.getEmpno()); empMap.put("hiredate", emp.getHiredate()); redisTemplate.opsForHash().putAll("empmap", empMap); redisTemplate.opsForHash().entries("empmap"); } @Test public void testList() { redisTemplate.opsForList().rightPush("mylist", "hello"); redisTemplate.opsForList().rightPush("mylist", "world"); redisTemplate.opsForList().rightPush("mylist", "test"); redisTemplate.opsForList().rightPush("mylist", "woniu"); List<String> list = redisTemplate.opsForList().range("mylist", 0, -1); for (String s : list) { System.out.println(s); } String str = (String) redisTemplate.opsForList().index("mylist", 1); System.out.println(str); str = (String) redisTemplate.opsForList().rightPop("mylist"); System.out.println("pop:" + str); Long size = redisTemplate.opsForList().size("mylist"); System.out.println("size:" + size); } @Test public void testSet() { redisTemplate.opsForSet().add("myset", "hello"); redisTemplate.opsForSet().add("myset", "hello"); redisTemplate.opsForSet().add("myset", "world"); redisTemplate.opsForSet().add("myset", "test"); //获取所有元素 Set<String> set = redisTemplate.opsForSet().members("myset"); for (String s : set) { System.out.println(s); } System.out.println(redisTemplate.opsForSet().isMember("myset", "hello")); } @Test public void testEmpSet() { Emp emp1 = new Emp(1001, "emp1", new Date()); Emp emp2 = new Emp(1002, "emp2", new Date()); Emp emp3 = new Emp(1003, "emp3", new Date()); Emp emp4 = new Emp(1004, "emp3", new Date()); redisTemplate.opsForSet().add("myset1", emp1);//{} redisTemplate.opsForSet().add("myset1", emp2);//{} redisTemplate.opsForSet().add("myset1", emp3);//{} redisTemplate.opsForSet().add("myset2", emp2); redisTemplate.opsForSet().add("myset2", emp3); redisTemplate.opsForSet().add("myset2", emp4); Set<Emp> set = redisTemplate.opsForSet().difference("myset1", "myset2"); for (Emp emp : set) { System.out.println("差集:" + emp.getEmpno()); } Set<Emp> inter = redisTemplate.opsForSet().intersect("myset1", "myset2"); for (Emp emp : inter) { System.out.println("交集:" + emp.getEmpno()); } Set<Emp> union = redisTemplate.opsForSet().union("myset1", "myset2"); for (Emp emp : union) { System.out.println("并集:" + emp.getEmpno()); } } @Test public void testZSet() { redisTemplate.opsForZSet().add("scores", "zs", 88d); redisTemplate.opsForZSet().add("scores", "lisi", 98d); redisTemplate.opsForZSet().add("scores", "ww", 68d); redisTemplate.opsForZSet().add("scores", "hello", 88d); redisTemplate.opsForZSet().range("scores", 0, -1); Set<ZSetOperations.TypedTuple> set = redisTemplate.opsForZSet().rangeByScoreWithScores("scores", 60d, 90d); for (ZSetOperations.TypedTuple typedTuple : set) { System.out.println("分数:" + typedTuple.getScore() + ",value:" + typedTuple.getValue()); } redisTemplate.opsForZSet().incrementScore("scores", "zs", 5d); Long count = redisTemplate.opsForZSet().count("scores", 60d, 90d); System.out.println("count:" + count); Long index = redisTemplate.opsForZSet().rank("scores", "hello"); System.out.println("index:" + index); } }
springboot项目中
导入依赖
使用配置类配置Jedis和RedisTemplate
具体的有时间再写
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 代理模式 -- 通过代理对象间接访问对象
- [置顶] 通过json字符串传对象集合,在js中访问对象的属性
- 通过ACL和.NET Framework实施对Windows对象访问的管理
- 如何:通过使用 Visual C# 2010 功能访问 Office 互操作对象(C# 编程指南)
- 如何使用RedisTemplate访问Redis数据结构
- JS通过组装key值访问json对象中的值
- RedisTemplate访问Redis数据结构(三)——Hash
- 并发CURL访问并通过REDIS来控制并发数
- js可以利用dom非常轻松的就可以遍历一个表格。当然只要是dom中有的所有对象都可以通过js来访问和处理。
- 对象布局(不通过友元访问私有成员)
- JavaScript中通过数组索引方式访问和属性名方式访问对象属性的一个小小误区
- 通过反射访问对象私有和保护成员
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- js-return返回多个值,通过对象的属性访问
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- 通过一条sql语句访问不同数据库服务器中的数据库对象的方法
- QT: c++ 中通过objectName访问qml中的对象
- Redis-21Redis集群模式-Centos6.5上3台主机3主3从的配置及通过代码访问集群
- 【Unity】6.3 通过 C# 脚本创建和访问游戏对象