package com.amway.msgcenter.msgtask.util;redis
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;spring
import redis.clients.jedis.JedisCommands;ide
@Component
public class RedisUtil {code
@Autowired // 操做字符串的template,StringRedisTemplate是RedisTemplate的一個子集 private StringRedisTemplate stringRedisTemplate; @Autowired // RedisTemplate,能夠進行全部的操做 private RedisTemplate<Object, Object> redisTemplate; public void set(String key, String value) { stringRedisTemplate.opsForValue().set(key, value); } public void set(String key, String value, long time) { stringRedisTemplate.opsForValue().set(key, value, time); } public String get(String key) { return stringRedisTemplate.opsForValue().get(key); } public void delete(String key) { stringRedisTemplate.delete(key); } public Long getLock(String lockKey, String value, int time) { return redisTemplate.execute(new RedisCallback<Long>() { @Override public Long doInRedis(RedisConnection connection) throws DataAccessException { JedisCommands commands = (JedisCommands) connection.getNativeConnection(); Long result = commands.setnx(lockKey, value); commands.expire(lockKey, time); return result; } }); } public String getLock2(String lockKey, String value, int time) { return redisTemplate.execute(new RedisCallback<String>() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { JedisCommands commands = (JedisCommands) connection.getNativeConnection(); return commands.set(lockKey, value, "NX", "PX", time * 1000L); } }); }
}字符串