您的位置:首页 > 数据库 > Redis

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
具体的有时间再写

  • 点赞
  • 收藏
  • 分享
  • 文章举报
zifan_ 发布了11 篇原创文章 · 获赞 0 · 访问量 185 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: