Tôi muốn xóa các phím khớp với "người dùng *".Trong redis, làm thế nào để tôi loại bỏ các phím?
làm cách nào để làm điều đó trong dòng lệnh redis?
Tôi muốn xóa các phím khớp với "người dùng *".Trong redis, làm thế nào để tôi loại bỏ các phím?
làm cách nào để làm điều đó trong dòng lệnh redis?
Đây không phải là tính năng ngay bây giờ để có thể thực hiện trong một lần chụp (xem các nhận xét trong số DEL
documentation). Thật không may, bạn chỉ còn lại bằng cách sử dụng KEYS
, lặp qua các kết quả và sau đó sử dụng DEL
để xóa từng kết quả.
Làm thế nào để sử dụng bash một chút để trợ giúp?
for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
do echo DEL $key
done | redis-cli
Để bước qua nó:
echo 'KEYS user*' | redis-cli | awk '{print $1}'
- nhận được tất cả các phím và loại bỏ các văn bản thêm bạn không muốn với awk.echo DEL $key
- cho mỗi người, tạo một câu lệnh echo để xóa nó.| redis-cli
- lấy các câu lệnh DEL và chuyển chúng trở lại cli.Không đề xuất đây là phương pháp tốt nhất (bạn có thể gặp một số vấn đề nếu một số tên người dùng của bạn có dấu cách trong đó, nhưng hy vọng bạn nhận được điểm).
Câu trả lời tiếp theo của camoctopus, bạn không cần echo
và đường ống, bạn có thể chuyển lệnh dưới dạng đối số thành redis-cli
. Điều này có nghĩa bạn có thể làm
for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
do redis-cli "DEL" "$key"
done
Một compact one-liner tôi sử dụng để làm những gì bạn muốn là:
redis-cli KEYS "user*" | xargs redis-cli DEL
Điều này thật tuyệt, cảm ơn. Thật đáng buồn là Redis không có chức năng này một cách tự nhiên. – snapfractalpop
Nếu bạn có cơ sở dữ liệu đa dạng (không gian chính) thì đây là mẹo: Cho phép nói rằng bạn cần xóa các khóa trong db3: tiền tố «redis-cli -n 3 KEYS»: * "| xargs redis-cli -n 3 DEL' – Christoffer
có một lớp lót nếu bạn cần cung cấp AUTH (tức là đăng nhập) trước khi thực hiện lệnh xóa không? – thames
Tôi biết điều này là cũ, nhưng đối với những bạn đến đây hình của Google:
Tôi vừa xuất bản tiện ích giao diện dòng lệnh tới npm và github cho phép bạn xóa các khóa khớp với mẫu nhất định (thậm chí hoặc khi bạn yêu cầu người dùng) từ cơ sở dữ liệu Redis.
Bạn có thể tìm thấy những tiện ích ở đây:
Sử dụng awk
, tất cả các phím phù hợp với từ redis sử dụng redis-cli KEYS
lệnh và ống để redis-cli DEL
lệnh.
redis-cli KEYS "user*" | awk '{ system("redis-cli DEL " $1) }'
Khi sử dụng chế độ oneliner, bạn có thể chỉnh sửa mẫu trong trường hợp nó thoát các ký tự cụ thể. Ví dụ, để xóa các mẫu như '\ test b \ b' sử dụng:
redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del
Sử dụng này để loại bỏ những khóa redis có gạch chéo ngược, dấu ngoặc kép, dấu ngoặc kép hoặc không gian:
redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL
trong redis bạn không xóa các phím nhưng các phím sẽ tự xóa. –