Apakah kaedah pelaksanaan skrip Lua dan senario aplikasi dalam Redis?
1. Gambaran Keseluruhan skrip Redis Lua
Redis membenarkan pengguna menulis skrip tersuai menggunakan skrip Lua dan menjalankannya pada pelayan Redis. Lua ialah bahasa skrip yang ringan dengan kelebihan kesederhanaan, kecekapan dan kebolehskalaan. Dalam Redis, skrip Lua boleh digunakan untuk pemprosesan data yang kompleks, seperti penapisan data, pengagregatan, pengisihan, dsb., dan juga boleh meningkatkan prestasi pelayan Redis.
2. Kelebihan skrip Redis Lua
Berbanding dengan kaedah arahan Redis tradisional, skrip Lua mempunyai kelebihan berikut:
(2) Pengurangan Kependaman rangkaian: Satukan berbilang arahan Redis ke dalam satu skrip Lua, mengurangkan interaksi rangkaian antara klien dan pelayan. Pada masa yang sama, pelayan Redis juga menyediakan arahan EVALSHA, yang boleh cache nilai SHA1 skrip dalam pelayan Apabila melaksanakan skrip yang sama pada masa akan datang, anda hanya perlu lulus nilai SHA1, yang mengurangkan masa penghantaran rangkaian.
(2) Operasi atom: Skrip Lua boleh memastikan atomicity beberapa arahan Redis dan mengelakkan masalah konkurensi.
(3) Perintah tersuai: Melalui skrip Lua, anda boleh mengembangkan koleksi arahan Redis dan melaksanakan perintah tersuai.
3. Senario aplikasi skrip Redis Lua
(1) Pertanyaan kompleks: Untuk beberapa keperluan pertanyaan yang rumit, menggunakan skrip Lua boleh Dilaksanakan dengan cepat tempatan, mengelakkan masalah pemprosesan data di pihak pelanggan.
(2) Logik pengiraan: Untuk sesetengah senario yang memerlukan logik pengiraan, walaupun tiada arahan pengiraan yang sepadan disediakan dalam Redis, logik pengiraan tersuai boleh dilaksanakan melalui skrip Lua.
(3) Operasi transaksi: Skrip Lua boleh menjamin atomicity set perintah Redis, yang memungkinkan untuk melaksanakan operasi transaksi pada Redis.
(4) Statistik masa nyata: Skrip Lua boleh mengira data dalam Redis dalam masa nyata, seperti mengira masa nyata UV, PV dan data lain.
4. Cara menggunakan skrip Redis Lua
Skrip Redis Lua boleh dilaksanakan melalui arahan EVAL atau arahan EVALSHA Kaedah penggunaan khusus adalah seperti berikut:
EVAL script numkeys key [key ...] arg [arg ...] EVALSHA sha1 numkeys key [key ...] arg [arg ...]
Antaranya, skrip ialah kandungan skrip Lua mewakili bilangan pasangan nilai kunci yang perlu dikendalikan dalam skrip Lua mewakili nama nilai kunci yang perlu dikendalikan; arg mewakili parameter yang perlu dikendalikan dalam skrip Lua.
5. Skrip Lua menggunakan redis dalam java
Akhir sekali, mari kita sepadukan dalam java. Berikut ialah Demo skrip Lua yang mengintegrasikan Redis dengan Spring Boot dan melaksanakan operasi CRUD asas
5.1 Tambah kebergantungan berikut dalam pom.xml:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
5.2 Maklumat sambungan Redis dan tambahkan konfigurasi berikut dalam application.properties:
# Redis数据库地址 spring.redis.host=127.0.0.1 # Redis端口 spring.redis.port=6379 # Redis密码(如果没有密码不用填写) spring.redis.password=
5.3 Tentukan skrip Redis Lua
Untuk menggunakan skrip Lua dalam Redis, anda perlu mentakrifkan skrip terlebih dahulu dalam skrip Spring Boot Lua boleh ditakrifkan dalam tiga cara:
menggunakan definisi rentetan dalam kod
mentakrifkan dalam RedisTemplate
Di sini kami menggunakan kaedah definisi dalam RedisTemplate dan menambah kod berikut pada kacang RedisTemplate:
@Bean public RedisScript<Long> redisScript() { RedisScript<Long> redisScript = new DefaultRedisScript<>(); redisScript.setLocation(new ClassPathResource("lua/RedisCRUD.lua")); redisScript.setResultType(Long.class); return redisScript; }
Antaranya, RedisCRUD.lua ialah skrip Lua yang ingin kami takrifkan digunakan untuk melaksanakan operasi CRUD asas.
5.4. Laksanakan RedisService
Seterusnya kita perlu melaksanakan RedisService untuk mengendalikan Redis, menyuntik RedisTemplate dan redisScript ke dalam RedisService, dan kemudian melaksanakan operasi CRUD asas:
@Service public class RedisServiceImpl implements RedisService { @Autowired private RedisTemplate<String, Object> redisTemplate; @Autowired private RedisScript<Long> redisScript; public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value); } public Object get(String key) { return redisTemplate.opsForValue().get(key); } public void delete(String key) { redisTemplate.delete(key); } public Boolean exists(String key) { return redisTemplate.hasKey(key); } public Long hset(String key, String field, Object value) { return redisTemplate.opsForHash().put(key, field, value); } public Object hget(String key, String field) { return redisTemplate.opsForHash().get(key, field); } public void hdelete(String key, String... fields) { redisTemplate.opsForHash().delete(key, fields); } public Boolean hexists(String key, String field) { return redisTemplate.opsForHash().hasKey(key, field); } public Long eval(String script, List<String> keys, List<Object> args) { return redisTemplate.execute(RedisScript.of(script), keys, args.toArray()); } public Long eval(List<String> keys, List<Object> args) { return redisTemplate.execute(redisScript, keys, args.toArray()); } }
Di sini kami menggunakan beberapa kaedah dalam RedisTemplate untuk melaksanakan operasi CRUD asas, dan kaedah eval untuk melaksanakan skrip Lua tersuai.
5.5. Tulis skrip Redis Lua
Akhir sekali, kita perlu menulis skrip RedisCRUD.lua Skrip ini digunakan untuk melaksanakan operasi CRUD asas:
-- set if KEYS[1] and ARGV[1] then redis.call('SET', KEYS[1], ARGV[1]) return 1 end -- get if KEYS[1] and not ARGV[1] then return redis.call('GET', KEYS[1]) end -- delete if KEYS[1] and not ARGV[1] then redis.call('DEL', KEYS[1]) return 1 end -- exists if KEYS[1] and not ARGV[1] then if redis.call('EXISTS', KEYS[1]) == 1 then return true else return false end end -- hset if KEYS[1] and ARGV[1] and ARGV[2] and ARGV[3] then redis.call('HSET', KEYS[1], ARGV[1], ARGV[2]) redis.call('EXPIRE', KEYS[1], ARGV[3]) return 1 end -- hget if KEYS[1] and ARGV[1] and not ARGV[2] then return redis.call('HGET', KEYS[1], ARGV[1]) end -- hdelete if KEYS[1] and ARGV[1] and not ARGV[2] then redis.call('HDEL', KEYS[1], ARGV[1]) return 1 end -- hexists if KEYS[1] and ARGV[1] and not ARGV[2] then if redis.call('HEXISTS', KEYS[1], ARGV[1]) == 1 then return true else return false end end
Dalam skrip ini, kami mentakrifkan 8 operasi:
set: set key-value
get: dapatkan nilai yang sepadan dengan kekunci
padam: padamkan nilai-kunci
wujud: tentukan sama ada kunci itu wujud
hset: tetapkan nilai medan dalam cincang
hget: Dapatkan nilai yang sepadan dengan medan dalam cincang
hdelete: Padamkan medan dalam hash -value
hexists: Tentukan sama ada medan wujud dalam hash
5.6 Test RedisService
Akhirnya kami tulis kelas ujian untuk menguji sama ada RedisService boleh berfungsi dengan betul Berikut ialah kod sampel:
@RunWith(SpringRunner.class) @SpringBootTest public class RedisServiceImplTest { @Autowired private RedisService redisService; @Test public void test() { //第一种方式:执行string的lua redisService.eval("redis.call('SET', KEYS[1], ARGV[1])",Collections.singletonList(hashKey), Collections.singletonList(hashValue)); //第二种方式:执行lua脚本 String key ="key"; String value ="value"; redisService.eval(Collections.singletonList(hashKey), Collections.singletonList(hashValue)); }
Atas ialah kandungan terperinci Apakah kaedah pelaksanaan skrip Lua dan senario aplikasi dalam Redis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Redis menggunakan jadual hash untuk menyimpan data dan menyokong struktur data seperti rentetan, senarai, jadual hash, koleksi dan koleksi yang diperintahkan. Redis berterusan data melalui snapshots (RDB) dan menambah mekanisme tulis sahaja (AOF). Redis menggunakan replikasi master-hamba untuk meningkatkan ketersediaan data. Redis menggunakan gelung acara tunggal untuk mengendalikan sambungan dan arahan untuk memastikan atom dan konsistensi data. Redis menetapkan masa tamat tempoh untuk kunci dan menggunakan mekanisme memadam malas untuk memadamkan kunci tamat tempoh.

Langkah-langkah untuk menyelesaikan masalah yang tidak dapat dijumpai oleh Redis-Server: periksa pemasangan untuk memastikan Redis dipasang dengan betul; Tetapkan pembolehubah persekitaran redis_host dan redis_port; Mulakan Redis Server Redis-server; Semak sama ada pelayan sedang menjalankan ping redis-cli.

Untuk melihat semua kunci di Redis, terdapat tiga cara: Gunakan perintah kunci untuk mengembalikan semua kunci yang sepadan dengan corak yang ditentukan; Gunakan perintah imbasan untuk melangkah ke atas kunci dan kembalikan satu set kunci; Gunakan arahan maklumat untuk mendapatkan jumlah kunci.

Untuk melihat nombor versi REDIS, anda boleh menggunakan tiga kaedah berikut: (1) Masukkan arahan INFO, (2) Mulakan pelayan dengan pilihan --version, dan (3) Lihat fail konfigurasi.

Cara terbaik untuk memahami kod sumber REDIS adalah dengan langkah demi langkah: Dapatkan akrab dengan asas -asas Redis. Pilih modul atau fungsi tertentu sebagai titik permulaan. Mulakan dengan titik masuk modul atau fungsi dan lihat baris kod mengikut baris. Lihat kod melalui rantaian panggilan fungsi. Berhati -hati dengan struktur data asas yang digunakan oleh REDIS. Kenal pasti algoritma yang digunakan oleh Redis.

Menggunakan Arahan Redis memerlukan langkah -langkah berikut: Buka klien Redis. Masukkan arahan (nilai kunci kata kerja). Menyediakan parameter yang diperlukan (berbeza dari arahan ke arahan). Tekan Enter untuk melaksanakan arahan. Redis mengembalikan tindak balas yang menunjukkan hasil operasi (biasanya OK atau -r).

Redis memerintahkan set (ZSET) digunakan untuk menyimpan elemen yang diperintahkan dan disusun mengikut skor yang berkaitan. Langkah -langkah untuk menggunakan ZSET termasuk: 1. Buat zset; 2. Tambah ahli; 3. Dapatkan skor ahli; 4. Dapatkan kedudukan; 5. Dapatkan ahli dalam julat ranking; 6. Padam ahli; 7. Dapatkan bilangan elemen; 8. Dapatkan bilangan ahli dalam julat skor.
