2015-09-04 19 views
6

Tôi nhận được câu trả lời hỗn hợp về nghiên cứu của mình tại đây.Không Redis chỉ cho phép biểu diễn chuỗi nhưng không cho phép giá trị số

  • Ai đó có thể xác minh rằng Redis Server chỉ có thể lưu trữ đại diện của bất kỳ giá trị số nào không?

  • Ví dụ: nếu tôi sử dụng máy khách Java (Jedis) với kiểu kép trong lpush, tôi có cần chuyển đổi nó thành tương đương với loại chuỗi trước khi gửi tới Redis không?

  • Hoặc có cách nào để tôi có thể gửi qua một loại số thực tế như là gấp đôi không? Nếu có, có bất kỳ mã ví dụ nào về cách thực hiện điều này không?

Cảm ơn

Trả lời

10

Redis lưu trữ tất cả mọi thứ trong chuỗi hoặc trong chuỗi đại diện của nó. Ngay cả các chức năng như INCR công việc bằng cách đầu tiên phân tích nó thành INTEGER sau đó thực hiện các hoạt động

Lưu ý: đây là một hoạt động chuỗi vì Redis không có một loại nguyên chuyên dụng. Chuỗi được lưu trữ tại khóa được hiểu là một số nguyên có ký tự base-10 64 bit để thực thi thao tác.

Redis lưu trữ số nguyên trong biểu diễn số nguyên của chúng, vì vậy đối với các giá trị chuỗi thực sự chứa số nguyên, không có phí để lưu trữ chuỗi ký tự của số nguyên.

Và với Jedis; nhìn vào nguồn tôi không nghĩ rằng nó hỗ trợ bất kỳ điều gì khác ngoài chuỗi

+1

Cảm ơn bạn đã xác nhận lý thuyết của tôi. Tôi thực sự coi trọng điều này! –

0

Số đôi có thể được lưu dưới dạng chuỗi nếu bạn đang sử dụng codec JSON, nhưng nó cũng có thể được lưu ở định dạng nhị phân được Kryo, CBOR sử dụng Các codec MsgPack được hỗ trợ bởi khung công tác dựa trên Redis cho Java - Redisson.

Các vấn đề liên quan