Artikel ini akan memperkenalkan anda kepada jenis data cincang dalam redis dan memperkenalkan operasi asas data jenis cincang saya harap ia akan membantu anda.
Mari kita lihat contoh ini dahulu
Dalam bahagian sebelumnya kita Mari belajar tentang jenis storan rentetan bersama-sama. Walau bagaimanapun, jika penyimpanan data objek mempunyai keperluan kemas kini yang kerap, operasi akan menjadi rumit. Contohnya: user:id:100 -> {"id":100,"name":"春晚","fans":12355,"blogs":99,"focus:83}
, jika anda perlu mengemas kini data setempat dalam objek, anda perlu menggantikan semua data, jadi anda mempunyai keperluan berikut. [Cadangan berkaitan: Tutorial video Redis]
Keperluan baharu: Kumpulkan satu siri data yang disimpan untuk memudahkan pengurusan, seperti menyimpan maklumat tentang objekDiperlukan struktur storan: Satu ruang storan menyimpan berbilang data pasangan nilai kunci
seperti yang ditunjukkan di bawah:
Untuk menyelesaikan masalah ini, kami memperkenalkan Jenis data baharu: hash
. Pada masa yang sama, struktur storan cincang juga telah dioptimumkan seperti berikut
hset key field value
# 查询单个字段数据 hget key field # 查询所有数据 hgetall key
hdel key field1 [field2]
hmset key field1 value1 field2 value2
hmget key field1 field2
hlen key
hexists key field
hkey key hvals key
hincrby key field increment hincrbyfloat key field increment
Langkah berjaga-jaga operasi data jenis cincang
Nilai di bawah jenis cincang hanya boleh menyimpan rentetan, jenis data lain tidak dibenarkan dan tiada objek bersarang. Jika data tidak diperolehi, hasil yang sepadan ialah (tiada); 🎜>
Jenis cincang sangat hampir dengan bentuk penyimpanan data objek, dan boleh menambah dan memadam atribut objek secara fleksibel Walau bagaimanapun, niat asal reka bentuk cincang bukanlah untuk menyimpan sejumlah besar objek untuk menyalahgunakannya, apatah lagi menggunakan cincangan sebagai senarai objek; menjadi kesesakan akses data.<🎜. > Di sini kami tidak membincangkan penyegerakan berterusan antara troli beli-belah dan pangkalan data, mahupun perhubungan antara troli beli-belah dan pesanan, dan mengabaikan penyimpanan maklumat troli beli-belah untuk pengguna yang tidak log masuk. Kami hanya menggunakan model storan redis untuk
menambah, menyemak imbas, menukar kuantiti, memadam, mengosongkanMenggunakan pelanggan ID sebagai kunci, setiap pengguna mencipta struktur storan cincang yang sepadan dengan maklumat troli beli-belah
Menyimpan nombor produk sebagai medan dan kuantiti pembelian sebagai nilaiTambah produk: tambah Medan baharu dan nilai
Semak imbas produk: traverse hashTukar kuantiti: auto-kenaikan/auto-penurunan, nilai tetapkan
Padam produk: padam medanbidang1 digunakan khas untuk menjimatkan kuantiti
# 001 用户购买 ID为101商品 100件,ID为102的商品 200件 hmset 001 101 100 102 200 # 002 用户购买 ID为102商品 1件,ID为104的商品 7件 hmset 002 102 1 104 7
Format penamaan: id produk: nombor Simpan data: Nilai
medan2 digunakan khas untuk menyimpan maklumat produk yang dipaparkan dalam troli beli-belah, termasuk penerangan teks, alamat imej, maklumat pedagang, dll.Format penamaan : id produk:maklumat Simpan data: json
di atas, rentetan mengandungi ruang, jadi ia disebut dengan petikan berganda untuk melarikan diri tujuan.
Memandangkan medan2 mungkin wujud dalam berbilang rekod produk, data dalam medan2 boleh disimpan dalam cincang bebas. Pada masa ini, adalah tidak munasabah untuk menyimpan data cincang setiap kali rekod troli beli-belah ditambahkan. Anda boleh menyimpan data melalui operasi
Jika data wujud, operasi simpan tidak akan dilakukan. Format arahan adalah seperti berikut# 001 用户 购买 ID为101的商品 2件,商品的信息为:{"name":"good name"} hmset 001 101:num 2 101:info "{\"name\":\"goods name\"}" # 002 用户 购买 ID为101的商品 1件,商品的信息为:{"name":"good name"} hmset 002 101:num 1 101:info "{\"name\":\"goods name\"}"
101:info
Contoh kod adalah seperti berikut
# 将id为101 的商品独立存起来 hsetnx info 101 "{\"name\":\"goods name\"}"
案例:双 11 活动日,销售手机充值卡的商家对移动、联通、电信的 30 元、50 元、100 元商品推出抢购活动,每种商品的抢购上限为 100。
解决方案
实现过程
商品初始信息
# p01商家下,c30充值券1000张,c50充值券1000张,c100充值券1000张 hmset p01 c30 1000 c50 1000 c100 1000
当 c30 售出1件时,值减 1; 当 c100 售出 20 件时,值减 20,如下代码
# p01商家,商品c30售出1件 hincrby p01 c30 -1 # p01商家,商品c100售出20件 hincrby p01 c100 -20
string 存储 json 字符串:读取方便,在更新的时候会整体进行更新
hash 存对象具体的字段:更新灵活
引入 hash 数据类型之后,我们就解决了 string 存储对象,更新对象时需要整体更新的问题。
更多编程相关知识,请访问:编程入门!!
Atas ialah kandungan terperinci Mari kita bincangkan tentang jenis data hash dalam redis dan cara mengendalikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!