Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Cách đổi tên trường trong băm cho nhiều phím trong Redis

Giả sử bạn muốn bắt đầu đặt tên trường bằng under_scores và một thành viên khác trong nhóm đã sử dụng camelCase. Bây giờ các hàm băm redis của bạn là một mớ hỗn độn và bạn muốn gắn bó với một quy ước. Bạn cần một cách để đổi tên các trường trên tất cả các hàm băm.

Redis không có cách nào để đổi tên các trường trong một hàm băm. Nhưng quan trọng hơn, không có cách nào để làm điều đó cho tất cả các hàm băm bạn đã tạo.

May mắn thay, một chút phép thuật dòng lệnh là tất cả những gì cần thiết để khắc phục tình trạng lộn xộn.


Lệnh này sẽ tìm các khóa phù hợp với người dùng mẫu:*, sau đó đổi tên các trường

  • create_date to createDate
  • posttypeid thành postTypeId
  • view_count thành viewCount
  • … và v.v.

Thiếu lệnh “hrename”

Redis không có lệnh hrename, vì vậy trước tiên chúng tôi viết một lệnh trong tập lệnh lua. Lệnh này sẽ đổi tên các trường trong một hàm băm.

evalsha <script-sha1-identifier> 1 <key> <old-field-1> <new-field-1>...


Trước tiên, bạn sẽ cần tải tập lệnh. Lệnh cat hrename.lua | redis-cli -x script load tải tập lệnh và trả về số nhận dạng SHA1. Bạn có thể sử dụng mã định danh này bất cứ khi nào bạn muốn gọi tập lệnh.

Đổi tên trường bằng nhiều hàm băm

Bây giờ chúng ta có một lệnh để sửa một hàm băm, chúng ta cần chạy nó trong một vòng lặp cho tất cả các hàm băm khớp với một mẫu. Tập lệnh hash_bulk_rename_fields.sh chỉ làm điều đó.

  1. Đầu tiên, chúng tôi sử dụng redis-cli --scan --pattern <pattern> để nhận danh sách các khóa, một khóa trên mỗi dòng.
  2. Tiếp theo, chúng tôi chuyển các khóa qua grep . Lệnh quét của Redis không chấp nhận biểu thức chính quy, vì vậy chúng tôi thực hiện lọc cơ bản bằng cách quét và sau đó cung cấp biểu thức chính quy tốt hơn thông qua grep.
  3. Sau đó, chúng tôi chạy một tập lệnh awk cho mỗi khóa. Tập lệnh awk này hơi phức tạp, vì vậy chúng tôi sẽ chia nhỏ nó ra
  4. Tập lệnh awk có mẫu lệnh evalsha <sha1> 1 __key__ <old field name> <new field name>.. . Đây là lệnh sẽ chạy cho tất cả các phím.
  5. Đối với mỗi khóa phù hợp, lệnh awk thay thế __key__ với khóa thực tế
  6. Tiếp theo, chúng tôi chuyển đổi lệnh chuỗi sang định dạng giao thức redis. Đây là định dạng thô mà redis hiểu được.
  7. Cuối cùng, chúng tôi chuyển các lệnh thô sang redis-cli bằng cách sử dụng cờ –pipe. Đây là cách hiệu quả nhất để gửi các lệnh hàng loạt tới redis.

Tùy chỉnh tập lệnh này

  1. Bạn có thể thay đổi --pattern và lệnh grep để chọn các khóa thuộc loại băm
  2. Bạn có thể tùy chỉnh cmd_template để bao gồm các trường bạn muốn đổi tên
  3. Nếu máy chủ redis của bạn không có trên máy chủ cục bộ, bạn sẽ phải cung cấp máy chủ, cổng và mật khẩu hai lần trong lệnh, về cơ bản bất cứ khi nào bạn gọi redis-cli.

Xem thêm

  • Đổi tên nhiều phím bằng tính năng quét
  • Xóa các phím phù hợp với một mẫu
  • Đặt Ngày hết hạn thành nhiều khóa
  • RDBTools GUI cho Redis cho phép bạn xem trước các hành động hàng loạt của mình và cung cấp GUI mạnh mẽ để quản lý dữ liệu trong Redis. Đây là bản tải xuống miễn phí!

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tại sao tôi nên đóng hoặc mở các kết nối Redis?

  2. Giới hạn độ dài danh sách trong redis

  3. Yêu cầu lại trên ngăn xếp gỗ tuyết tùng Heroku Số lượng công nhân vẫn tồn tại sau khi công nhân chấm dứt

  4. Tại sao Redis SortedSet sử dụng Skip List thay vì Balanced Tree?

  5. Lưu vào bộ đệm các đối tượng JSON ở phía máy chủ