redis实现缓存的小例子

这里直说基于JedisConnectionFactory和spring提供的RedisTemplate模板实现的简单小例子;

首先导入jar包

<dependency>  
    <groupId>org.springframework.data</groupId>  
    <artifactId>spring-data-redis</artifactId>  
    <version>1.0.2.RELEASE</version>  
</dependency>  
<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-core</artifactId>  
    <version>${spring.version}</version>  
</dependency>  
<dependency>  
    <groupId>redis.clients</groupId>  
    <artifactId>jedis</artifactId>  
    <version>2.1.0</version>  
</dependency>

这里没什么可说的,然后配置spring整合Redis的配置文件spring-redis.xml:

 <!-- jedis 配置 -->  
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" >  
         <property name="maxIdle" value="100" />  
         <!-- <property name="maxWaitMillis" value="1000" /> -->
         <property name="MaxWait" value="1000" />   
         <property name="testOnBorrow" value="true" />  
    </bean >  
    <!-- redis工厂 -->  
    <bean id="connectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >  
         <property name="poolConfig" ref="poolConfig" />  
         <property name="port" value="6379" />  
         <property name="hostName" value="127.0.0.1" />  
         <property name="password" value="" />  
         <property name="timeout" value="100000" ></property>  
    </bean >  
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >  
         <property name="connectionFactory" ref="connectionFactory" />  
         <property name="keySerializer" >  
             <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
         </property>  
         <property name="valueSerializer" >  
             <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />  
         </property>  
    </bean >

这里要注意<!-- <property name="maxWaitMillis" value="1000" /> -->不同版本的Redis写的不是一样的;

然后加入到spring配置文件中:

<import resource="classpath:spring-redis.xml" />

这样配置就结束了;接下来我们来写以下Redis的util方法:

@Component
public final class RedisUtil {
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    public boolean set(String key, Object value) {
        boolean result = false;
        try {
            ValueOperations<String, Object> operations = redisTemplate.opsForValue();
            operations.set(key, value);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    public String get(String key) {
        String result = null;
        ValueOperations<String, Object> operations = redisTemplate.opsForValue();
        result = operations.get(key).toString();
        return result;
    }
}
这里只写了一种类型:String,还有其他四中数据类型的封装就不在这写了;

这里要注意:redisTemplate必须在xml里面注入进来,否则你@Resource没法获取对象;这里不能用@Autowired,它是加载接口的;

@Component不要拉下,这是spring扫描注入的;

然后在使用的类中加入:

	 @Resource
	 private RedisUtil redisUtil;

这样你就这可在这个勒种使用Redis了

@Override
	public User findUs(String username, String password) {
		// TODO Auto-generated method stub
		User user = userDao.findUser(username,password);
		System.out.println(user);
		redisUtil.set("user", user);
		System.out.println("============="+redisUtil.get("user"));
		return user;
	}

这里要注意,你传递的是一个实体类对象,所以这里实体类必须做处理:

public class User  implements Serializable{
	private String id;
	private String username;
	private String password;
	private String gender;
实现Serializable接口,否则你无法放入到redis里面;这样一个小例子就结束了;

接下来说下序列化问题,redis传值都要进行序列化才能够实现,那么使用json格式就相当不错:

fastjson-1.2.2.jar

这是需要的jar包

然后我们序列化一个对象:

JSON.toJSONString(new User())

这样的形式,就是转成json就行了;这里只是个例子没有实际意义;

然后我们获取的数据也要再转成对象:

JSONObject jsonObject=JSONObject.parseObject(redisUtil.get("name"));
User stu=(User)JSONObject.toJavaObject(jsonObject, User.class);
这样就结束了;












  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值