您好,欢迎访问一九零五行业门户网

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

1.思考有哪些重复代码?  如果只是为了简单的增删改查,那么只需要告诉我是哪个类要进行序列化反序列化,告诉我key的前缀是什么,不就行了嘛?至于说过期时间,咱们这一次可以先不考虑,如果需要加上过期时间,也不是一件困难的事情,那么我们稍作思考,使用java中的泛型,就可以得到下面的基础类:
2.基础服务类public class basicdataredisservice<t> {    /**     * redis key prefix string     * redis中的key前缀     */    private string prefixstring;    private class<t> 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<user> {    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增删改查脚本的详细内容。
其它类似信息

推荐信息