Heim >Datenbank >Redis >So implementieren Sie ein universelles Redis-Skript zum Hinzufügen, Löschen, Ändern und Abfragen

So implementieren Sie ein universelles Redis-Skript zum Hinzufügen, Löschen, Ändern und Abfragen

王林
王林nach vorne
2023-05-27 08:28:351387Durchsuche

1. Überlegen Sie, welche doppelten Codes es gibt?

 Wenn es nur um einfaches Hinzufügen, Löschen, Ändern und Abfragen geht, müssen Sie mir nur sagen, welche Klasse serialisiert und deserialisiert werden muss, und mir sagen, wie das Präfix des Schlüssels lautet Ist das nicht genug? Was die Ablaufzeit betrifft, können wir sie dieses Mal ignorieren. Wenn wir die Ablaufzeit hinzufügen müssen, ist das keine schwierige Sache. Dann denken wir eine Weile darüber nach und verwenden Generika in Java, um die folgende Basisklasse zu erhalten. 🎜🎜#

2. Basisdienstklasse

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. Passen Sie eine Abfragedienstklasse an

 Angenommen, wir möchten Benutzer abfragen, dann müssen wir nur schreiben Dies:

@Service
public class UserRedisServiceImpl extends BasicDataRedisService<User> {

    private static String PREFIX = "henbao:user:";

    public UserRedisServiceImpl() {
        super(PREFIX, User.class);
    }
}
4. Denken Sie über die Nachteile nach, die das Schreiben auf diese Weise mit sich bringt

Obwohl das Schreiben auf diese Weise die Menge an Code spart und den gewünschten Komfort erreichen kann, habe ich immer das Gefühl dass etwas nicht stimmt. Die Bedienung könnte etwas auffälliger sein. Junge, wenn du eine solche Idee haben kannst, dann herzlichen Glückwunsch, du hast ein höheres Streben nach Code. Wir haben die Klasse jetzt zweimal geschrieben und Konstanten geschrieben, um zu zeigen, wie das Präfix in Redis lautet. Wenn wir Spring verwenden, teilen wir dem zugrunde liegenden Framework diese Dinge normalerweise nicht mit. Normalerweise verwenden wir Anmerkungen, oder? Daher erscheint

. Redis Repositories

5. Jeder hat Vor- und Nachteile

Obwohl wir dies sehr gerne schreiben, hoffen einige Entwickler, dass der in Redis gespeicherte Inhalt vollständig mit dem Modell in der Datenbank übereinstimmt Schicht und Datenbank müssen geändert werden. Nach der Tabellenstruktur wird eine Welle der umgekehrten Generierung und Abdeckung generiert ... Dann entwickeln Sie es bitte selbst und reichen Sie leistungsfähigeren Code für Spring ein! Derzeit wird empfohlen, diese Methode zu verwenden, wenn Sie über ein separates Redis-Ebenenmodell verfügen. Natürlich weist sie alle Probleme auf, die beim Scannen von Annotationen auftreten sollten.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein universelles Redis-Skript zum Hinzufügen, Löschen, Ändern und Abfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen