千家信息网

如何实现通用的Redis增删改查脚本

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下如何实现通用的Redis增删改查脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.思考有哪些重复代码
千家信息网最后更新 2026年11月01日如何实现通用的Redis增删改查脚本

小编给大家分享一下如何实现通用的Redis增删改查脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1.思考有哪些重复代码?

  如果只是为了简单的增删改查,那么只需要告诉我是哪个类要进行序列化反序列化,告诉我key的前缀是什么,不就行了嘛?至于说过期时间,咱们这一次可以先不考虑,如果需要加上过期时间,也不是一件困难的事情,那么我们稍作思考,使用Java中的泛型,就可以得到下面的基础类:

2.基础服务类

public class BasicDataRedisService {    /**     * Redis key prefix String     * Redis中的key前缀     */    private String prefixString;    private Class targetClass;    @Autowired    private StringRedisTemplate redisTemplate;    public BasicDataRedisService(String prefixString, Class targetClass) {        this.prefixString = prefixString;        this.targetClass = targetClass;    }    // -------------------------以下为内部使用---------------------------------    protected String generateKey(String id) {        return prefixString + "id:" + id;    }    protected T getByKey(String key) {        T result = ValueRedisUtil.getRedisObject(redisTemplate, key, targetClass);        return result;    }    protected boolean setByKey(String key, Object object) {        return ValueRedisUtil.setRedisObject(redisTemplate, key, object);    }    protected boolean deleteByKey(String key) {        return ValueRedisUtil.delRedis(redisTemplate, key);    }    // -------------------------以下对外提供---------------------------------    /**     * 根据id获取     *     * @param id     * @return     */    public T getById(String id) {        String key = generateKey(id);        return getByKey(key);    }    /**     * 根据id刷新     *     * @param data     * @param id     * @return     */    public boolean setByModel(Object data, String id) {        String key = generateKey(id);        return setByKey(key, data);    }    /**     * 根据id删除     *     * @param id     * @return     */    public boolean deleteById(String id) {        String key = generateKey(id);        return deleteByKey(key);    }}

3.自定义一个查询服务类

  假设我们要查询用户,那么我们只需要这么写:

@Servicepublic class UserRedisServiceImpl extends BasicDataRedisService {    private static String PREFIX = "henbao:user:";    public UserRedisServiceImpl() {        super(PREFIX, User.class);    }}

4.思考这样写的弊端

  虽然这样写节省了代码量,想要实现的便捷也能够实现,但是总觉得哪里有点不对劲,操作似乎还可以再骚一点。少年,如果你能有这样的想法,那么恭喜你,你对代码有更高的追求。我们现在写了两次类,写常量来表名Redis中的前缀是什么。我们在使用Spring的时候通常不是这样来告诉底层框架这些东西的,我们通常是使用注解吧?故,Redis Repositories 就登场了。

5.各有利弊

  虽然这样写我们很开心,但是有一些开发人员希望redis中存储的内容与db层的Model完全一致,且修改数据库表结构后还会逆向生成覆盖一波……那么请你自己再开发一下,为Spring提交更加强大的代码吧!目前更建议单独有redis层model的使用此方式,当然了,注解扫描该有的问题它都有,大家处理的时候保持耐心即可。

以上是"如何实现通用的Redis增删改查脚本"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

代码 内容 前缀 篇文章 脚本 基础 序列 时候 时间 注解 开发 服务 查询 便捷 对劲 强大 一致 困难 耐心 不怎么 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 保险科技 互联网保险 互联网是第几次科技革命的成果 深圳九邦互联网科技有限公司 互联网与科技发展 关于新基建和互联网科技 科技制造互联网公司 狮子座互联网科技 科技互联网公司logo 上海万想互联网科技 华脉科技工业互联网产品 上海电发互联网科技有限公司 中国互联网有什么科技含量 全球顶尖互联网科技公司 智帮互联网科技公司最近动向 中天科技中国工业互联网 上海创道互联网络科技有限公司 互联网安防科技感 互联网金融金融科技 现代科技的标志之一的互联网 为想互联网科技怎么样 上海挚品互联网科技 智网互联网科技 上海喔噻互联网科技 睿民互联网科技 北京大学互联网科技怎么样 赶超互联网科技 微信多开 深圳育鹏互联网科技有限公司招聘 健康食品互联网创新科技园项目 国大互联网教育科技有限公司工作
0