Rumah > Artikel > pangkalan data > Mari bercakap secara mendalam tentang 5 jenis data asas dalam Redis
Artikel ini akan memberi anda pemahaman terperinci tentang 5 jenis data asas dalam Redis (String, List, Set, Hash, Zset ordered set).
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]
Jenis struktur | Nilai yang disimpan dalam strukturKeupayaan baca dan tulis struktur | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
td>
| ||||||||||||||||||||
Senarai senarai | Senarai terpaut, setiap nod pada senarai terpaut mengandungi rentetan | Dua pasang senarai terpaut Lakukan operasi tolak dan pop pada penghujung, baca elemen tunggal atau berbilang, cari atau padam elemen berdasarkan nilai|||||||||||||||||||
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 | tr>
命令 | 简述 | 使用 |
---|---|---|
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 |
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"
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.
命令 | 简述 | 使用 |
---|---|---|
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 |
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)
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
命令 | 简述 | 使用 |
---|---|---|
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
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
Redis hash ialah jadual pemetaan medan dan nilai jenis rentetan amat sesuai untuk menyimpan objek.
命令 | 简述 | 使用 |
---|---|---|
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"
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!