WRONGTYPE Hoạt động chống lại một khóa giữ sai loại giá trị php


141

Xin chào Tôi đang sử dụng Laravel với Redis. Khi tôi đang cố truy cập khóa bằng phương thức get thì sẽ gặp lỗi sau "Thao tác WRONGTYPE đối với khóa giữ sai loại giá trị"

Tôi đang sử dụng mã sau để truy cập giá trị khóa -

tôi sử dụng mã này để lấy dữ liệu từ redis

$values = "l_messages";
$value = $redis->HGETALL($values);
print($value);

Câu trả lời:


357

Redis hỗ trợ 5 loại dữ liệu. Bạn cần biết loại giá trị mà khóa chính ánh xạ tới, vì đối với mỗi loại dữ liệu, lệnh để truy xuất nó là khác nhau.

Dưới đây là các lệnh để lấy giá trị khóa:

  • nếu giá trị là kiểu chuỗi -> GET <key>
  • nếu giá trị là kiểu băm -> HGETALL <key>
  • nếu giá trị thuộc danh sách loại -> lrange <key> <start> <end>
  • nếu giá trị thuộc loại bộ -> smembers <key>
  • nếu giá trị thuộc loại được sắp xếp loại -> ZRANGEBYSCORE <key> <min> <max>

Sử dụng TYPElệnh để kiểm tra loại giá trị mà khóa đang ánh xạ tới:

  • kiểu <key>

Bạn đã lưu trong ngày :-)
Zin Trin

8

Lỗi này có nghĩa là giá trị được lập chỉ mục bởi khóa "l_messages" không phải là loại hash, mà là một thứ khác. Có lẽ bạn đã đặt nó thành giá trị khác trước đó trong mã của bạn. Hãy thử các lệnh lấy giá trị khác nhau, bắt đầu bằng GET, để xem cái nào hoạt động và bạn sẽ biết loại nào thực sự ở đây.


8
Trên thực tế, print($redis->TYPE($values));sẽ nói với bạn mà không cần phỏng đoán;)
Itamar Haber

1
Tuyệt vời :) Không biết lệnh này, không bao giờ phải sử dụng nó. Đây là tài liệu: redis.io/commands/type
Advance512
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.