SpringData进阶(二)SpringData Redis之对象处理

前言

      本章讲解SpringData Redis对象处理的相关知识

方法

1.概念

前面章节我们学习了Spring+SpringData Redis项目的搭建过程,并且进行了简单的测试。

本次将通过对象处理来进一步讲解SpringData Redis。

2.对象处理步骤

1)引入Json转换相关Jar坐标

<!-- 引入Json处理相关jar -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

因为我们存储对象到Redis中,采用Json格式存储最为恰当。

2)修改RedisTemplate的序列化器

<!-- 配置Redis模板类 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
	<property name="connectionFactory" ref="jedisConnectionFactory"/>
	<!-- redis序列化器 -->
	<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>
	</property>
	<property name="hashKeySerializer">
		<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
	</property>
	<property name="hashValueSerializer">
		<bean class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
			<constructor-arg type="java.lang.Class" value="java.lang.Object" />
		</bean>
	</property>
</bean>

由于我们redis的hash类型:

redis语法:hset 键 属性键 属性值

这里键我们采用的是String类型的序列化器。这里也就是第一个序列化器。

属性键我们依然采用的是String类型的序列化器。这里也就是第三个序列化器。

属性值我们采用的是Json类型的序列化器。这里也就是最后一个序列化器。

序列化器的配置尤为重要!!!

3)编写测试代码,存储数据和获取数据

定义实体类文件,实现序列化接口——Serializable

package cn.edu.ccut.bo;

import java.io.Serializable;

public class Users implements Serializable {
	private Integer id;
	private String username;
	private String password;

    public Users() {
    }

    public Users(Integer id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = 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 + '\'' +
                '}';
    }
}

编写测试代码,存储数据:

@Test
public void testRedis01(){
	//本次添加对象采用hash存储,key为users,代表表名
	//其存储的键值对采用key=id,value=对象的方法
	//本次采用Json格式存储
	Users user01 = new Users(1,"jwang","jwang");
	Users user02 = new Users(2,"zhangsan","zhangsan");
	Users user03 = new Users(3,"lisi","lisi");
	redisTemplate.opsForHash().put("users", user01.getId().toString(), user01);
	redisTemplate.opsForHash().put("users", user02.getId().toString(), user02);
	redisTemplate.opsForHash().put("users", user03.getId().toString(), user03);
}

执行结果在redis中查看为:

这里我们使用Redis客户端工具进行查看:

由此可见,我们成功的完成了数据的添加,可以理解users为表名哦!

那么既然添加可以,获取怎么玩呢?

@Test
public void testRedis02(){
	List<Object> users = redisTemplate.opsForHash().values("users");
	for (Object user : users) {
		System.out.println(user);
	}
}

测试结果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值