Rumah >pangkalan data >Redis >Bagaimana untuk melaksanakan penambahan Redis universal, pemadaman, pengubahsuaian dan skrip pertanyaan

Bagaimana untuk melaksanakan penambahan Redis universal, pemadaman, pengubahsuaian dan skrip pertanyaan

王林
王林ke hadapan
2023-05-27 08:28:351386semak imbas

1. Fikirkan apakah kod pendua yang ada?

  Jika ia hanya untuk penambahan mudah, pemadaman, pengubahsuaian dan pertanyaan, maka anda hanya perlu memberitahu saya kelas mana yang perlu disiri dan dinyahsiri, dan beritahu saya apakah awalan kunci itu, bukan cukup ke? Bagi masa tamat, kita boleh mengabaikannya kali ini Jika kita perlu menambah masa tamat, ia tidak sukar Kemudian kita fikirkan sebentar dan gunakan generik dalam Java untuk mendapatkan kelas asas berikut:

2. Kelas perkhidmatan asas

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 Sesuaikan kelas perkhidmatan pertanyaan

  Katakan kita ingin menanyakan pengguna, maka kita hanya perlu menulis:

@Service
public class UserRedisServiceImpl extends BasicDataRedisService<User> {

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

    public UserRedisServiceImpl() {
        super(PREFIX, User.class);
    }
}

4. . Fikirkan tentang keburukan menulis seperti ini

Walaupun menulis dengan cara ini menjimatkan jumlah kod dan boleh mencapai kemudahan yang anda inginkan, saya sentiasa merasakan ada sesuatu yang tidak kena dan operasi itu nampaknya lebih sedikit. mengujakan. Boy, jika anda boleh mempunyai idea sedemikian, maka tahniah, anda mempunyai usaha yang lebih tinggi untuk kod. Kami telah menulis kelas dua kali sekarang, dan menulis pemalar untuk menunjukkan apakah awalan dalam Redis. Apabila kami menggunakan Spring, kami biasanya tidak memberitahu rangka kerja asas perkara ini Kami biasanya menggunakan anotasi, bukan? Oleh itu, Redis Repositories muncul.

5 Masing-masing mempunyai kebaikan dan keburukan tersendiri

 Walaupun kami sangat gembira untuk menulis ini, sesetengah pembangun berharap kandungan yang disimpan dalam redis benar-benar konsisten dengan Model lapisan db , dan walaupun selepas mengubah suai struktur jadual pangkalan data Akan ada gelombang liputan generasi terbalik... Kemudian sila bangunkannya sendiri dan serahkan kod yang lebih berkuasa untuk Spring! Pada masa ini, adalah disyorkan untuk menggunakan kaedah ini jika anda mempunyai model lapisan redis yang berasingan Sudah tentu, ia mempunyai semua masalah yang harus dihadapi dalam pengimbasan anotasi.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penambahan Redis universal, pemadaman, pengubahsuaian dan skrip pertanyaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam