Rumah  >  Artikel  >  pangkalan data  >  Mari bercakap secara mendalam tentang 5 jenis data asas dalam Redis

Mari bercakap secara mendalam tentang 5 jenis data asas dalam Redis

青灯夜游
青灯夜游ke hadapan
2021-11-23 18:56:552325semak imbas

Artikel ini akan memberi anda pemahaman terperinci tentang 5 jenis data asas dalam Redis (String, List, Set, Hash, Zset ordered set).

Mari bercakap secara mendalam tentang 5 jenis data asas dalam Redis

Pengenalan kepada struktur data Redis

Untuk redis, semua kekunci adalah rentetan. Apabila kita bercakap tentang struktur data asas, kita membincangkan jenis data untuk menyimpan nilai, yang terutamanya termasuk 5 jenis data biasa: Rentetan, Senarai, Set, Zset dan Hash. [Cadangan berkaitan: Tutorial video Redis]

Mari bercakap secara mendalam tentang 5 jenis data asas dalam Redis

Nilai yang disimpan dalam struktur Dua pasang senarai terpaut Lakukan operasi tolak dan pop pada penghujung, baca elemen tunggal atau berbilang, cari atau padam elemen berdasarkan nilai tr>
Jenis strukturKeupayaan baca dan tulis struktur
结构类型 结构存储的值 结构的读写能力
String字符串 可以是字符串、整数或浮点数 对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;
List列表 一个链表,链表上的每个节点都包含一个字符串 对链表的两端进行push和pop操作,读取单个或多个元素;根据值查找或删除元素;
Set集合 包含字符串的无序集合 字符串的集合,包含基础的方法有看是否存在添加、获取、删除;还包含计算交集、并集、差集等
Hash散列 包含键值对的无序散列表 包含方法有添加、获取、删除单个元素
Zset有序集合 和散列一样,用于存储键值对 字符串成员与浮点数分数之间的有序映射;元素的排列顺序由分数的大小决定;包含方法有添加、获取、删除单个元素以及根据分值范围或成员来获取元素
Rentetan rentetan

td>

Ia boleh menjadi rentetan, integer atau nombor titik terapung beroperasi pada keseluruhan rentetan atau sebahagian daripada rentetan melakukan operasi kenaikan atau pengurangan pada integer atau terapung nombor titik;
Senarai senarai Senarai terpaut, setiap nod pada senarai terpaut mengandungi rentetan
Tetapkan koleksi

Koleksi tidak tertib yang mengandungi rentetan Himpunan rentetan, termasuk kaedah asas seperti menyemak sama ada terdapat penambahan, pemerolehan dan pemadaman ia juga termasuk pengiraan persilangan, kesatuan , perbezaan, dsb.
Cincangan cincang Jadual cincang tidak tertib yang mengandungi pasangan nilai kunci Mengandungi kaedah untuk menambah, mendapatkan dan memadamkan satu Elemen
Zset ordered set
Sama seperti cincang, digunakan untuk menyimpan kunci -pasangan nilai Pemetaan tertib antara ahli rentetan dan skor titik terapung ditentukan oleh saiz skor termasuk menambah, mendapatkan, memadam elemen individu dan mendapatkan elemen; berdasarkan julat skor atau ahli

Penjelasan terperinci tentang struktur data asas

    Rentetan rentetan
  • String ialah redis Jenis data paling asas, satu kunci sepadan dengan satu nilai.
命令 简述 使用
GET 获取存储在给定键中的值 GET name
SET 设置存储在给定键中的值 SET name value
DEL 删除存储在给定键中的值 DEL name
INCR 将键存储的值加1 INCR key
DECR 将键存储的值减1 DECR key
INCRBY 将键存储的值加上整数 INCRBY key amount
DECRBY 将键存储的值减去整数 DECRBY key amount
Jenis Rentetan adalah selamat binari, yang bermaksud rentetan redis boleh mengandungi sebarang data. Seperti nombor, rentetan, imej jpg atau objek bersiri. arahan menggunakan
  • Pelaksanaan arahan
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> get counter
"3"
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
  • Senario praktikal
    • Cache: Senario penggunaan klasik, Biasa maklumat, rentetan, gambar atau video yang digunakan diletakkan dalam redis Redis berfungsi sebagai lapisan cache dan mysql berfungsi sebagai lapisan kegigihan untuk mengurangkan tekanan baca dan tulis mysql.
    • Counter: redis ialah model berbenang tunggal Satu arahan tidak akan dilaksanakan sehingga perintah seterusnya dilaksanakan Pada masa yang sama, data boleh dipindahkan ke sumber data lain satu langkah.
    • sesi: Penyelesaian biasa ialah sesi musim bunga redis untuk melaksanakan perkongsian sesi,

Senarai senarai

Senarai dalam Redis sebenarnya ialah senarai terpaut (Redis menggunakan senarai terpaut dua hujung untuk melaksanakan Senarai).

Menggunakan struktur Senarai, kami boleh melaksanakan fungsi baris gilir mesej terkini dengan mudah (seperti Talian Masa Sina Weibo). Satu lagi aplikasi Senarai ialah baris gilir mesej Anda boleh menggunakan operasi PUSH Senarai untuk menyimpan tugasan dalam Senarai, dan kemudian benang pekerja menggunakan operasi POP untuk mengeluarkan tugasan untuk pelaksanaan.

  • Penggunaan arahan
命令 简述 使用
RPUSH 将给定值推入到列表右端 RPUSH key value
LPUSH 将给定值推入到列表左端 LPUSH key value
RPOP 从列表的右端弹出一个值,并返回被弹出的值 RPOP key
LPOP 从列表的左端弹出一个值,并返回被弹出的值 LPOP key
LRANGE 获取列表在给定范围上的所有值 LRANGE key 0 -1
LINDEX 通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 LINEX key index
  • Petua untuk menggunakan senarai
    • lpush lpop=Stack(stack)
    • lpush rpop=Baris gilir (baris gilir)
    • lpush ltrim=Koleksi Terhad (koleksi terhad)
    • lpush brpop=Baris Gilir Mesej (baris gilir mesej)
  • Pelaksanaan arahan
127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379> lindex mylist -1
"1"
127.0.0.1:6379> lindex mylist 10        # index不在 mylist 的区间范围内
(nil)
  • Senario praktikal
    • Weibo TimeLine: Seseorang menyiarkan di Weibo, Use lpush untuk menambah garis masa dan memaparkan maklumat senarai baharu.
    • Baris Gilir Mesej

Set koleksi

Set Redis ialah Koleksi tidak tertib jenis String. Ahli set adalah unik, yang bermaksud bahawa data pendua tidak boleh muncul dalam set.

Pengumpulan dalam Redis dilaksanakan melalui jadual cincang, jadi kerumitan menambah, memadam dan mencari ialah O(1). Perintah

  • menggunakan
命令 简述 使用
SADD 向集合添加一个或多个成员 SADD key value
SCARD 获取集合的成员数 SCARD key
SMEMBER 返回集合中的所有成员 SMEMBER key member
SISMEMBER 判断 member 元素是否是集合 key 的成员 SISMEMBER key member

untuk beberapa operasi pengumpulan lain, sila rujuk di sini

https:// www.runoob.com/redis/redis-sets.html

  • Pelaksanaan arahan
127.0.0.1:6379> sadd myset ycf ycf1 xiao ycf
(integer) 3
127.0.0.1:6379> smember myset
1) "xiao"
2) "ycf1"
3) "ycf"
127.0.0.1:6379> sismember myset ycf
(integer) 1
  • Senario praktikal
    • Teg (teg), tambah teg kepada pengguna atau pengguna menambah teg pada mesej, supaya mereka yang mempunyai teg yang sama atau teg serupa boleh mengesyorkan perkara atau orang untuk diikuti.
    • Suka, tidak suka, kumpulkan, dsb. boleh diletakkan dalam set untuk melaksanakan

Hash hash

Redis hash ialah jadual pemetaan medan dan nilai jenis rentetan amat sesuai untuk menyimpan objek.

  • arahan menggunakan
命令 简述 使用
HSET 添加键值对 HSET hash-key sub-key1 value1
HGET 获取指定散列键的值 HGET hash-key key1
HGETALL 获取散列中包含的所有键值对 HGETALL hash-key
HDEL 如果给定键存在于散列中,那么就移除这个键 HDEL hash-key sub-key1
  • 命令执行
127.0.0.1:6379> hset user name1 ycf
(integer) 1
127.0.0.1:6379> hset user email1 ycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
127.0.0.1:6379> hget user user
(nil)
127.0.0.1:6379> hget user name1
"ycf"
127.0.0.1:6379> hset user name2 xiaoycf
(integer) 1
127.0.0.1:6379> hset user email2 xiaoycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
5) "name2"
6) "xiaoycf"
7) "email2"
8) "xiaoycf@163.com"
  • 实战场景
    • 缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

Zset有序集合

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • 命令使用
命令 简述 使用
ZADD 将一个带有给定分值的成员添加到哦有序集合里面 ZADD zset-key 178 member1
ZRANGE 根据元素在有序集合中所处的位置,从有序集合中获取多个元素 ZRANGE zset-key 0-1 withccores
ZREM 如果给定元素成员存在于有序集合中,那么就移除这个元素 ZREM zset-key member1

更多命令请参考这里 

https://www.runoob.com/redis/redis-sorted-sets.html

  • 命令执行
127.0.0.1:6379> zadd myscoreset 100 ycf 90 xiaoycf
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaoycf"
2) "ycf"
127.0.0.1:6379> ZSCORE myscoreset ycf
"100"
  • 实战场景
    • 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

更多编程相关知识,请访问:编程视频!!

Atas ialah kandungan terperinci Mari bercakap secara mendalam tentang 5 jenis data asas dalam Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam