java - redis 缓存方案--有没有可用的?
黄舟
黄舟 2017-04-18 09:13:22
0
6
469

现在的方案是,sql 作为key 查询结果序列化后 存入value 。表如果有数据修改添加删除,flushDB()。
但是整个项目只要有数据变更缓存就没了。
谁还有其他方案?
想知道的就是数据增删改对redis都有操作后再对数据库操作,redis里查询的永远是最新的,当某些原因redis里查不到时查数据库然后保存到reids里。
这种方案有谁实现了吗?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(6)
小葫芦

Mengapa anda perlu menggunakan sql sebagai kunci... dan setiap kali anda mengepam db, anda boleh mengubah fikiran anda Jika terdapat jadual dengan produk dan kunci utama ialah id, anda boleh membuat cache dengan butiran utama: id produk, dan letakkan ini Rekod baris digunakan sebagai nilai, dan jenis data ialah cincang atau rentetan. Kadangkala apabila perniagaan anda perlu menyemak maklumat produk tertentu berdasarkan kunci utama, anda mula-mula pergi ke redis untuk melihat jika terdapat cache butiran: kunci utama Kadangkala, anda hanya mengambil cache secara langsung cache, anda menyemak pangkalan data dan menyimpan hasil carian. Selain itu, apabila rekod berubah, anda boleh memadam cache secara terus atau mengemas kini cache.
Ini hanyalah contoh yang sangat mudah jenis data Redis sangat kaya dan boleh digunakan dengan sangat gembira jika digunakan dengan betul. Selain itu, dalam contoh di atas, anda boleh menetapkan tempoh sah untuk setiap cache, seperti satu minggu, bergantung pada perniagaan anda. Secara umumnya, pengguna jarang melihat kandungan lama, jadi selepas ia tamat tempoh dan tiada siapa yang melayarinya, ia tidak akan dibina semula Ini memastikan bahawa redis anda sentiasa mempunyai data panas. Ia bukan hanya sekumpulan data lama saya bosan menaip pada telefon saya. Sila suka jika ia berguna

左手右手慢动作

Maksud caching ialah untuk menyimpan data popular, seperti menyimpan data yang kerap digunakan oleh pangkalan data dalam redis, supaya anda tidak perlu menanyakan pangkalan data setiap kali.

Masalah yang dihadapi oleh poster ialah cara menyimpan data dalam cache konsisten dengan data dalam pangkalan data.
Seperti 表如果有数据修改添加删除,flushDB() yang dinyatakan di atas, adalah tidak digalakkan.

Pengendalian data cache sebenarnya dipermudahkan kepada membaca dan menulis

Apabila aplikasi anda bertanya redis, jika ia tidak ditemui, anda perlu menyemak pangkalan data pada masa ini dan menyimpan data yang ditemui dalam redis.
Apabila data dalam pangkalan data ditukar, 数据增删改对redis都有操作后再对数据库操作 yang dinyatakan di atas sebenarnya tidak digalakkan Aplikasi itu harus mengubah suai pangkalan data dahulu, dan kemudian mengemas kini semula selepas berjaya. Apakah yang perlu saya lakukan jika saya mengemas kini redis dahulu, tetapi kemas kini kepada pangkalan data gagal? Tidakkah redis menyimpan data kotor?

Selain itu, data dalam cache boleh menetapkan masa tamat tempoh (masa tamat tempoh, semak pangkalan data sekali lagi dan kemas kini data (walaupun data tidak berubah sama sekali). , sekurang-kurangnya mengurangkan beban pada pangkalan data.

Melihat kepada tujuan tema, terdapat cara untuk menggunakan redis sebagai sandaran data pangkalan data. Itu tidak semestinya menggunakan cache redis (mungkin anda harus mempertimbangkan sandaran master-slave pangkalan data).

Bagi penyelesaian yang anda nyatakan, melihat huraian topik, ia tidak memerlukan penyelesaian (saya rasa konfigurasi ketersediaan tinggi dipanggil penyelesaian apabila mempertimbangkan ketekalan data, dsb.).
Ini sebenarnya logik kod, ia bergantung pada cara kod itu ditulis.

伊谢尔伦

Spring mempunyai pemalam redis Ia adalah lebih mudah untuk menggunakan ehcache dan pemalam spring untuk projek kecil.

迷茫

Apabila anda melaksanakan sistem caching, anda mesti mempertimbangkan tiga soalan ini (soalan ketiga adalah pilihan)

  1. Pemuatan dalam cache

  2. Pembatalan cache

  3. Kemas kini dalam cache (pilihan)

Soalan 1:

Apa yang anda perlu lakukan untuk memuatkan cache adalah sangat mudah. ​​Untuk sebarang pertanyaan, tanya cache dahulu. Jika tiada hit dalam cache, kemudian semak pangkalan data.

Soalan 2:

Untuk membatalkan cache, anda hanya perlu ingat untuk memadam cache apabila sebarang pengubahsuaian (kemas kini, padam) dibuat pada pangkalan data

Soalan 3:

Apabila data dikemas kini, cache tidak akan menjadi tidak sah dan dipadamkan, tetapi cache akan dikemas kini Operasi pilihan ini boleh membantu anda mencapai kesan bahawa cache sentiasa terkini.

Mengenai soalan 3, terdapat masalah lain Jangan kemas kini cache sebelum pangkalan data berjaya dikemas kini. Pada masa ini, jika cache anda tidak dipulihkan, data kotor akan muncul

Peter_Zhu

mybatis-redis ada penyelesaiannya, boleh rujuk https://github.com/mybatis/redis-cache

刘奇

telah melaksanakan @Cacheable dan digunakan dalam kaedah lapisan service atau dao untuk memintas dan terus pergi ke redis untuk mendapatkan data.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!