最近在学习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);

}

}

php redis 删除元素,redisTemplate.delete()不能删除元素相关推荐

  1. 关于java文件删除file.delete()无法删除文件的处理办法

    1.问题: file.delete()无法删除文件file.delete()无法删除文件,无论执行多少次结果都为false: 2.分析原因: 1).有可能有流对该文件进行操作,或者是流操作完没有进行关 ...

  2. java delete file 失败_file.delete()无法删除文件的原因及解决方法

    file.delete()无法删除文件的原因及解决方法 发布时间:2020-05-06 09:41:00 来源:亿速云 阅读:756 作者:小新 今天小编给大家分享的是file.delete()无法删 ...

  3. SSM使用RedisTemplate按照索引删除list中的元素

    RedisTemplate按照索引删除list中的元素的一种方法 准备数据 取出整个list 核心思想:取出redis中list的所有元素,用java的list相关方法删除元素,得到一个新的list, ...

  4. C语言 - 删除数组中的指定元素(Delete)

    目录 引言: 题目说明: 举例分析: 初始状态: step 1: Step 2: Step 3 : Step 4 :  将最后一个元素赋值为0 Step 5 :将i下标向前迁移一位(重复判断): 代码 ...

  5. php redis hash删除key,如何优雅的删除Redis的大key

    关于Redis大键(Key),我们从[空间复杂性]和访问它的[时间复杂度]两个方面来定义大键.前者主要表示Redis键的占用内存大小:后者表示Redis集合数据类型(set/hash/list/sor ...

  6. B10_NumPy数组操作、修改数组形状、翻转数组、修改数组维度、连接数组、分割数组、数组元素的添加与删除

    NumPy数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resha ...

  7. 单链表删除所有值为x的元素_线性表之单链表

    单链表 一种以链接方式存储的线性表,适用于频繁增删操作,存储空间不定的情形. 单链表的一个存储结点包含两个域,数据域和指针域.数据域用于存储线性表的一个数据元素,指针域用于指示下一个结点开始的存储地址 ...

  8. 哈希表中能有相同元素吗_最小删除以使用哈希表使所有元素相同

    哈希表中能有相同元素吗 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 Problem statement: 问题陈述: Find minimum ...

  9. [vue] 删除数组用delete和Vue.delete有什么区别?

    [vue] 删除数组用delete和Vue.delete有什么区别? delete:只是被删除数组成员变为 empty / undefined,其他元素键值不变Vue.delete:直接删了数组成员, ...

最新文章

  1. 2019成考计算机几时出成绩,2019年成人高考成绩什么时候出来?如何查询
  2. VMware助青年时报构建安全高效应用平台
  3. python 如何封装dll_如何为DLL库创建Python包装器
  4. 微信8.0全心全意考虑用户需求为企业开展网络营销带来全新思考
  5. web页面 float定位导致“溢出现象”处理
  6. 通用Login功能自动化测试
  7. C语言再学习 -- 存储类、链接
  8. android中的线程池学习笔记
  9. leetcode-345-翻转字符串中的元音字母
  10. pku2503 Babelfish
  11. 在vivado里用rtl描述_如何利用Vivado HLS处理许多位准确或任意精度数据类型
  12. 【Python】解决No name 'QWidget' in module 'PyQt5.QtWidgets'
  13. 只用6张图教会AI识别物体,达摩院新方案大幅降低AI数据标注成本
  14. android任意函数绘制_图片和图形 | 可绘制对象概览
  15. selenium1、selenium2 示例代码(java版)
  16. Linux安装pyaudio
  17. PHP将swf转为gif,swf转gif 在线转换
  18. SketchUp 2019 组件库的正确应用
  19. android命令行启动,Android中使用am命令实现在命令行启动程序详解
  20. 第一届广西英招杯部分WP

热门文章

  1. python多维数据划分_【python+机器学习(4)】多维数据的特征选取(RidgeLasso)...
  2. uniapp网络请求获取数据_2.uni-app 发起网络请求
  3. android 锁屏 home,android 锁屏界面禁用长按home 和menu(recent apps)
  4. python字符串解析_Python-字符串解析-正则-re
  5. 微信小程序+TP5——token令牌生成
  6. 【51单片机快速入门指南】2.2:任意位/任意长度数码管显示数字、小数
  7. 让事件飞——Linux eventfd 原理
  8. Mac OS 如何更改文件的默认打开方式
  9. _attribute_((packed))
  10. python 数据库模块