php redis 删除元素,redisTemplate.delete()不能删除元素
最近在學(xué)習(xí)redis,使用spring-data-redis的RedisTemplate.delete()方法刪除時,添加是成功的,但是不能刪除。
代碼如下
public abstract class AbstractBaseRedisDao {
@Autowired
protected RedisTemplate redisTemplate;
// public void setRedisTemplate(RedisTemplate redisTemplate) {
// this.redisTemplate = redisTemplate;
// }
public RedisSerializer getRedisSerializer() {
return redisTemplate.getStringSerializer();
}
}
public interface IUserDao {
boolean add(User user);
void delete(String key);
void delete(List keys);
User get(String keyId);
}
@Service
public class UserDao extends AbstractBaseRedisDao implements IUserDao {
public boolean add(final User user) {
boolean result = redisTemplate.execute(new RedisCallback() {
public Boolean doInRedis(RedisConnection redisConnection) throws DataAccessException {
RedisSerializer serializer = getRedisSerializer();
byte[] key = serializer.serialize(user.getId());
byte[] name = serializer.serialize(user.getName());
return redisConnection.setNX(key, name);
}
});
return result;
}
public void delete(String key) {
List list = new ArrayList();
list.add(key);
delete(list);
}
public void delete(List keys) {
redisTemplate.delete(keys);
}
public User get(final String keyId) {
User result = redisTemplate.execute(new RedisCallback() {
public User doInRedis(RedisConnection redisConnection) throws DataAccessException {
RedisSerializer serializer = getRedisSerializer();
byte[] key = serializer.serialize(keyId);
byte[] value = redisConnection.get(key);
if (value == null) {
return null;
}
String name = serializer.deserialize(value);
return new User(keyId, name, null);
}
});
return result;
}
}
配置如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
p:hostName="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:poolConfig-ref="poolConfig" />
測試用例:
public class RedisTest {
private IUserDao userDao;
@Before
public void init() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("case1/applicationContext.xml");
userDao = (IUserDao) ctx.getBean("userDao");
}
@Test
public void testAddUser() {
User user = new User();
user.setId("B");
user.setName("B");
boolean result = userDao.add(user);
Assert.assertTrue(result);
}
@Test
public void testDelete() {
String key = "B";
User user = userDao.get(key);
System.out.println("刪除前:" + user);
userDao.delete(key);
user = userDao.get(key);
System.out.println("刪除后:" + user);
}
}
總結(jié)
以上是生活随笔為你收集整理的php redis 删除元素,redisTemplate.delete()不能删除元素的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [3]、Swagger——解决前后端打架
- 下一篇: 吕梁离石学校计算机专业在哪里,山西吕梁计