Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Bagaimana cara menyimpan dan mengambil string dengan aksen di redis?

Server Redis sendiri menyimpan semua data sebagai objek biner, sehingga tidak tergantung pada pengkodean. Server hanya akan menyimpan apa yang dikirim oleh klien (termasuk karakter UTF-8).

Berikut adalah beberapa eksperimen:

$ echo téléphone | hexdump -C
00000000  74 c3 a9 6c c3 a9 70 68  6f 6e 65 0a              |t..l..phone.|

c3a9 adalah representasi dari karakter 'é'.

$ redis-cli
> set t téléphone
OK
> get t
"t\xc3\xa9l\xc3\xa9phone"

Sebenarnya data disimpan dengan benar di server Redis. Namun, ketika diluncurkan di terminal, klien Redis menginterpretasikan output dan menerapkan fungsi sdscatrepr untuk mengubah karakter yang tidak dapat dicetak (yang definisinya bergantung pada lokal, dan tetap dapat rusak untuk karakter multibyte).

Solusi sederhana adalah meluncurkan redis-cli dengan opsi 'mentah':

$ redis-cli --raw
> get t
téléphone

Aplikasi Anda sendiri mungkin akan menggunakan salah satu pustaka klien daripada redis-cli, jadi dalam praktiknya seharusnya tidak menjadi masalah.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Script mencoba membuat variabel global

  2. Tugas yang sama dieksekusi beberapa kali

  3. Tombol sortir Spring Redis

  4. Redis AOF fsync (SELALU) vs. pohon LSM

  5. Status Sesi dengan Azure Redis Cache tidak berfungsi pada banyak instance