这里就不说redis官方提供jedis来操做redisredis
讲spring整合了jedis以后的用法spring
首先pom.xml先加依赖数组
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>ide
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>this
第一个是jedis依赖 第二个是spring整合jedis依赖spa
而后是spring的配置文件code
<!--redis的配置 不是必须的 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!--最大空闲数 -->
<property name="maxIdle" value="2" />
<!--最大链接数 -->
<property name="maxTotal" value="100" />
<!--最大等待时间 -->
<property name="maxWaitMillis" value="20000" />
</bean>xml
<!--redis链接工厂对象 经过这个对象 创建和redis的链接 -->
<bean name="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!--redis的IP地址 若是是本机就是127.0.0.1 -->
<property name="hostName" value="192.168.205.129"></property>
<!-- redis的端口 -->
<property name="port" value="6379"></property>
<!-- redis的密码 若是没有密码 能够省略 -->
<property name="password" value="123456"></property>
<!-- redis配置 不是必须的 -->
<property name="poolConfig" ref="poolConfig"></property>
</bean>对象
<!--jdk序列化器 能够将存入redis中的值进行序列化 取出会进行反序列化 -->
<bean name="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer">
</bean>blog
<!--String序列化器 能够将存入redis中的键 进行序列化 取出会进行反序列化 -->
<bean name="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer">
</bean>
<!-- 配置redis模板对象 这是咱们操做redis的对象 -->
<bean name="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<!-- 传入redis链接工厂对象 -->
<property name="connectionFactory" ref="connectionFactory"></property>
<!-- 传入 键 序列化器 -->
<property name="keySerializer" ref="stringRedisSerializer"></property>
<!-- 传入 值 序列化器 -->
<property name="valueSerializer" ref="jdkSerializationRedisSerializer"></property>
</bean>
以上就是spring整合jedis的配置 后续操做redis 只须要经过spring容器获得redisTemplate对象就能够了
/** * 使用spring整合redis的 RedisTemplate对象 * 保存对象到redis和从redis中读取对象 * * */ public class Test1 { public static void main(String[] args) { ClassPathXmlApplicationContext xml=new ClassPathXmlApplicationContext("classpath:spring/spring.xml"); //从spring容器中得到redis模板对象 RedisTemplate<String,Object> redisTemplate=xml.getBean("redisTemplate", RedisTemplate.class); //建立要保存的对象 User u=new User(); u.setUserID(1); u.setUserName("张三"); u.setUserTime(new Date()); //以字符串的格式 将对象序列化后存入redis redisTemplate.opsForValue().set("user:1", u); //从redis中取出指定键的值 并强转成User User user=(User)redisTemplate.opsForValue().get("user:1"); System.out.println(user); } }
我这是将一个对象 序列化后 以redis的字符串数据类型存储到redis中 而后经过key查询这个值 会自动反序列化 变成存入的对象
这是由于在配置文件中配置了jdk序列化器 和string序列化器 存入redis时都会序列化转成字节数组 以字符串的形式存入,取出会反序列化构建成对象
可是这样咱们经过redis客户端查询时 值就是咱们读不懂的字节数组 并且就算咱们存入的是 普通字符串也会被序列化成字节数组
若是没有存对象的需求 能够不配置jdk序列化器和string序列化器 这样只存取字符串 那经过客户端查询 也是能够看得懂的格式
把我这个bean类也贴出来 注意 实现序列化接口是必须的 否则不能将这个类的对象序列化
public class User implements Serializable { private static final long serialVersionUID = -8191663210611660061L; private Integer userID; private String userName; private Date userTime; public Integer getUserID() { return userID; } public void setUserID(Integer userID) { this.userID = userID; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Date getUserTime() { return userTime; } public void setUserTime(Date userTime) { this.userTime = userTime; } @Override public String toString() { return "User [userID=" + userID + ", userName=" + userName + ", userTime=" + userTime + "]"; } }
基本的使用差很少了 这个RedisTemplate 是对jedis的封装
Redis五大类型:字符串(String)、哈希/散列/字典(Hash)、列表(List)、集合(Set)、有序集合(sorted set)五种
对应的RedisTemplate对象操做这五种数据类型的API 这都是得到redisTemplate里面的内部类对象 在具体的方法 能够本身百度 或者看名字猜 方法很少
redisTemplate.opsForValue();//操做字符串 redisTemplate.opsForHash();//操做hash redisTemplate.opsForList();//操做list redisTemplate.opsForSet();//操做set redisTemplate.opsForZSet();//操做有序set