SpringDataRedis基础(2):StringRedisTemplate操作

1、StringRedisTemplate简介

Redis的String数据结构 (推荐使用StringRedisTemplate)

1.1、StringRedisTemplate 源码

public class StringRedisTemplate extends RedisTemplate<String, String> {
	
	public StringRedisTemplate() {
		RedisSerializer<String> stringSerializer = new StringRedisSerializer();
		setKeySerializer(stringSerializer);
		setValueSerializer(stringSerializer);
		setHashKeySerializer(stringSerializer);
		setHashValueSerializer(stringSerializer);
	}
	
	public StringRedisTemplate(RedisConnectionFactory connectionFactory) {
		this();
		setConnectionFactory(connectionFactory);
		afterPropertiesSet();
	}
	protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
		return new DefaultStringRedisConnection(connection);
	}
}

【注意】通过源码我们发现StringRedisTemplate是继承RedisTemplate的一个子类。StringRedisTemplate使用的序列化方式是StringRedisSerializer。

1.2、StringRedisTemplate与RedisTemplate关系

【StringRedisTemplate与RedisTemplate之间的关系】
(1)两者的关系是StringRedisTemplate继承RedisTemplate。
(2)两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
(3)SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。

1.3、过期时间

在设置值时参数含有long timeout, TimeUnit unit是对过期时间的设置。

#opsForValue字符串操作中
void set(K key, V value, long timeout, TimeUnit unit);

TimeUnit 是个枚举类型:

(1)TimeUnit.DAYSB表示多少天;
(2)TimeUnit.HOURS表示多少小时;
(3)TimeUnit.MINUTES表示多少分钟;
(4)TimeUnit.SECONDS表示多少秒;
(5)TimeUnit.MILLISECONDS表示毫秒;

2、StringRedisTemplate操作

字符串操作

 @Autowired
    private StringRedisTemplate redisTemplate;

    /**
     * StringRedisTemplate字符串操作opsForValue()方法
     *
     */
    @Test
    public void opsForValueTest(){
        redisTemplate.opsForValue().set("city1","北京");
        String city1 = redisTemplate.opsForValue().get("city1");
        System.out.println("city1:"+city1);
    }

【字符串操作并设置过期时间】

    @Autowired
    private StringRedisTemplate redisTemplate;

    /**
     *字符串操作设置过期时间
     * TimeUnit是个枚举类型
     */
    @Test
    public void testRedis2() {
        // 存储数据,并指定剩余生命时间,5小时
        this.redisTemplate.opsForValue().set("city2", "上海",
                5, TimeUnit.HOURS);
    }

hash操作

   /**
     * Hash操作,boundHashOps绑定可以为hash
     */
    @Test
    public void testHash() {
        BoundHashOperations<String, Object, Object> hashOps =
                this.redisTemplate.boundHashOps("user:info");
        // 操作hash数据
        hashOps.put("name", "wzy");
        hashOps.put("age", "12");

        // 获取单个数据
        Object name = hashOps.get("name");
        System.out.println("name = " + name);

        // 获取所有数据
        Map<Object, Object> map = hashOps.entries();
        for (Map.Entry<Object, Object> me : map.entrySet()) {
            System.out.println(me.getKey() + " : " + me.getValue());
        }
    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值