Tôi cần hết hạn tất cả các khóa bằng hàm băm redis, cũ hơn 1 tháng.Làm thế nào để "EXPIRE" phím con "HSET" trong redis?
Trả lời
This is not possible, vì lợi ích của keeping Redis simple.
Quoth Thiên Chúa:
Hi, nó không phải là có thể, hoặc sử dụng một chìa khóa top-level khác nhau cho rằng lĩnh vực cụ thể, hoặc lưu trữ cùng với các đệ lĩnh vực khác với một hết hạn thời gian, lấy cả và để ứng dụng hiểu được nếu nó là vẫn hợp lệ hoặc không dựa trên thời gian hiện tại.
Bạn có thể. Đây là một ví dụ.
redis 127.0.0.1:6379> hset key f1 1
(integer) 1
redis 127.0.0.1:6379> hset key f2 2
(integer) 1
redis 127.0.0.1:6379> hvals key
1) "1"
2) "1"
3) "2"
redis 127.0.0.1:6379> expire key 10
(integer) 1
redis 127.0.0.1:6379> hvals key
1) "1"
2) "1"
3) "2"
redis 127.0.0.1:6379> hvals key
1) "1"
2) "1"
3) "2"
redis 127.0.0.1:6379> hvals key
Sử dụng EXPIRE hoặc EXPIREAT lệnh.
Nếu bạn muốn hết hạn khóa cụ thể trong băm cũ hơn 1 tháng. Điều này là không thể. Lệnh hết hạn Redis là dành cho tất cả các khóa trong mã băm. Nếu bạn đặt khóa băm hàng ngày, bạn có thể đặt thời gian khóa để phát trực tiếp.
hset key-20140325 f1 1
expire key-20140325 100
hset key-20140325 f1 2
Có khung Redisson java triển khai thực hiện đối tượng băm Map
với mục nhập Hỗ trợ TTL. Nó sử dụng hmap
và zset
Đối tượng Redis nằm dưới mui xe. Ví dụ sử dụng:
RMapCache<Integer, String> map = redisson.getMapCache('map');
map.put(1, 30, TimeUnit.DAYS); // this entry expires in 30 days
Phương pháp này khá hữu ích.
nhưng làm cách nào bạn có thể tạo bản đồ?vì tôi không tìm thấy bất kỳ hướng dẫn hoặc phương pháp tạo/đặt – FaNaT
@ ZoltánNémeth Trong bản đồ Redis được tạo tự động khi chèn giá trị đầu tiên. –
Về triển khai NodeJS, tôi đã thêm trường tùy chỉnh expiryTime
vào đối tượng tôi lưu trong HASH. Sau đó, sau một khoảng thời gian cụ thể, tôi rõ ràng các mục HASH hết hạn bằng cách sử dụng đoạn mã sau:
client.hgetall(HASH_NAME, function(err, reply) {
if (reply) {
Object.keys(reply).forEach(key => {
if (reply[key] && JSON.parse(reply[key]).expiryTime < (new Date).getTime()) {
client.hdel(HASH_NAME, key);
}
})
}
});
Bạn có thể hết hạn Redis băm trong một cách dễ dàng, Ví dụ sử dụng python
import redis
conn = redis.Redis('localhost')
conn.hmset("hashed_user", {'name': 'robert', 'age': 32})
conn.expire("hashed_user", 10)
này sẽ hết hạn tất cả các phím con trong bămhashed_user sau 10 giây
cùng từ redis-cli,
127.0.0.1:6379> HMSET testt username wlc password P1pp0 age 34
OK
127.0.0.1:6379> hgetall testt
1) "username"
2) "wlc"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
127.0.0.1:6379> expire testt 10
(integer) 1
127.0.0.1:6379> hgetall testt
1) "username"
2) "wlc"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
sau 10 giây
127.0.0.1:6379> hgetall testt
(empty list or set)
- 1. HSET và sử dụng bộ nhớ SET?
- 2. Trong redis, làm thế nào để tôi loại bỏ các phím?
- 3. phím redis tôi không hết hạn
- 4. Làm thế nào để hiển thị TẤT CẢ các phím thông qua redis-cli?
- 5. Nodejs + Passport.js + Redis: làm thế nào để lưu trữ các phiên trong Redis
- 6. On-Session-expire-event?
- 7. Làm cách nào để xóa mọi thứ trong Redis?
- 8. Làm thế nào để Redis bắt đầu trên Heroku?
- 9. Làm thế nào để nhận được Redis Hash Length?
- 10. Lấy một loạt các phím với redis?
- 11. Làm thế nào để quy mô Node.js WebSocket Redis Server?
- 12. Làm thế nào để bảo mật Redis Cluster?
- 13. Làm thế nào an toàn để lưu phiên với Redis?
- 14. Làm thế nào để Redis chạy trên Azure?
- 15. Làm thế nào để redis yêu cầu O (1) thời gian để tra cứu chính?
- 16. Làm thế nào để nén một chuỗi trong Python để lưu trữ nó trong Redis?
- 17. Mục đích của dấu hai chấm trong các phím Redis
- 18. Làm thế nào để thêm các phím tắt JMenuBar?
- 19. Làm thế nào để chụp phím bấm xóa trong C#?
- 20. Làm thế nào để remap phím khi trong Emacs?
- 21. Làm thế nào để làm sạch tất cả các phiên trong Nodejs (heroku + redis)?
- 22. Làm thế nào để di chuyển một cây con khác cây con trong emacs org-mode
- 23. Làm thế nào để chơi âm thanh bấm bàn phím trong bàn phím tùy chỉnh?
- 24. Làm thế nào để ẩn bàn phím khi tôi bấm phím return trong một UITextField?
- 25. Làm thế nào để sử dụng Redis trong một chương trình C++?
- 26. Làm thế nào để đếm con trong một cây
- 27. làm thế nào để animate theo con chuột trong jquery
- 28. Làm thế nào để chuỗi con trong jquery
- 29. Làm thế nào để xóa đối tượng con trong NHibernate?
- 30. Làm thế nào để thêm menu con trong Qt
Tôi không nghĩ rằng ông muốn hết hạn * tất cả * phím trong băm, chứ không phải * tất cả các phím trong băm mà là lớn hơn 1 tháng *, vì vậy chỉ một số người trong số họ. Mà AFAIK là không thể. – UpTheCreek
IMHO câu hỏi cho chúng tôi giả định điều này. Vì vậy, Jonathan được +1 từ tôi, cos anh ấy đã giúp tôi! Thanx! – longliveenduro
làm cách nào bạn hết hạn "f1" và "f2"? – vgoklani