Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

hapus nilai hash redis secara massal berdasarkan nama kunci hash

Skrip EVAL berikut harus melakukan apa yang Anda inginkan:

local keys = redis.call('KEYS',KEYS[1])
for i,k in ipairs(keys) do
    local res = redis.call('HKEYS',k)
    for j,v in ipairs(res) do
        if string.find(v,ARGV[1]) then
            redis.call('HDEL',k,v)
        end
    end
end

Anda perlu memanggilnya dengan memberikan parameter berikut:

EVAL <script> 1 prefix:* cc_..

Harap dicatat bahwa ini memblokir loop acara Redis hingga skrip selesai, sehingga dapat membekukan Redis untuk sementara waktu jika Anda memiliki banyak kunci. Atomicity ada harganya.

Pembaruan:

Jika Anda tidak memerlukan atom, maka skrip berikut akan menghindari pemblokiran Redis terlalu lama (tapi harap dicatat, itu masih akan memblokir jika Anda memiliki sejumlah besar kunci global atau jika salah satu objek hash Anda besar:ada tidak ada cara untuk menghindari ini).

./redis-cli keys 'prefix:*' | awk '
BEGIN {
    script = "local res = redis.call('\''HKEYS'\'',KEYS[1]); \
          for j,v in ipairs(res) do                          \
            if string.find(v,ARGV[1]) then                   \
              redis.call('\''HDEL'\'',KEYS[1],v);            \
            end                                              \
          end"
}
{
    printf "EVAL \"%s\" 1 %s cc_..\n", script, $1
}' | ./redis-cli

(diuji dengan bash)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kunci Kedaluwarsa Redis Data Musim Semi

  2. redis - Menggunakan Hash

  3. Menyiapkan Redis di Webfaction

  4. Unicode dengan python

  5. Jaga agar data Redis tetap hidup antara komposisi docker ke bawah dan ke atas dalam wadah Docker