国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

PHP實(shí)現(xiàn)Redis基本數(shù)據(jù)結(jié)構(gòu)

2020-03-22 19:01:52
字體:
供稿:網(wǎng)友
這篇文章主要介紹了關(guān)于PHP實(shí)現(xiàn)Redis基本數(shù)據(jù)結(jié)構(gòu),有著一定的參考價(jià)值,現(xiàn)在分享給大家,有需要的朋友可以參考一下

Redis基本數(shù)據(jù)結(jié)構(gòu)與PHP實(shí)現(xiàn)

Redis(REmote DIctionary Server)是一個(gè)開源的使用ANSI C語(yǔ)言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API

Redis通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹?html' target='_blank'>value)可以是字符串(String),哈希(Map),列表(list),集合(Set),和有序集合(sorted sets)等類型

Redis配置與連接
// Redis.phpreturn [ host = 127.0.0.1 , port = 6379 // RedisTest.php$redis = new redis();$redisConf = include Redis.php $redis- connect($redisConf[ host ], $redisConf[ port 
Redis鍵(Key)
// redis key操作$redis- exists($key); // 判斷key值是否存在$redis- expire($key, 10); // 設(shè)置key在10秒后過期
Redis 字符串(String)
// redis string 字符串$redis- set($key, $val);$redis- incr($key); // key值+1,除非val是整數(shù),否則函數(shù)執(zhí)行失敗$redis- decr($key); // key值-1,同上$redis- append($key, ue // 追加key值內(nèi)容$redis- strlen($key); // 返回key值的長(zhǎng)度// 當(dāng)?shù)谝淮卧O(shè)置key值后,key值的數(shù)據(jù)類型就不能改變了。$redis- del($key); // 刪除key值
Redis 哈希(Hash)

Redis Hash是一個(gè)string類型的field和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象

Redis中每個(gè)hash可以存儲(chǔ)2^(32)-1(40多億)個(gè)鍵值對(duì)

//redis hash 哈希$redis- hset($key, field1 , val1 // 設(shè)置一個(gè)key-value鍵值對(duì)$redis- hmset($key, array( field2 = val2 , field3 = val3 // 設(shè)置多個(gè)k-v鍵值對(duì)$redis- hget($key, field2 // 獲取hash其中的一個(gè)鍵值$redis- hmget($key, array( field2 , field1 // 獲取hash的多個(gè)鍵值$redis- hgetall($key); // 獲取hash中所有的鍵值對(duì)$redis- hlen($key); // 獲取hash中鍵值對(duì)的個(gè)數(shù)$redis- hkeys($key); // 獲取hash中所有的鍵$redis- hvals($key); // 獲取hash中所有的值
Redis 列表(List)

Redis列表是簡(jiǎn)單的字符串列表,按照插入順序排序,可以添加一個(gè)元素列表的頭部(左邊)或者尾部(右邊)

Redis中一個(gè)列表最多可以存儲(chǔ)2^(32)-1個(gè)元素

// redis list 列表$index = $start = 0;$redis- lpush($key, val1 , val2 // 在list的開頭添加多個(gè)值$redis- lpop($key); // 移除并獲取list的第一個(gè)元素$redis- rpop($key); // 移除并獲取list的最后一個(gè)元素 $stop = $redis- llen($key) - 1; // 獲取list的長(zhǎng)度$redis- lindex($key, $index); // 通過索引獲取list元素$redis- lrange($key, $start, $stop); // 獲取指定范圍內(nèi)的元素
Redis集合(Set)

Redis的Set是String類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù)

Redis中集合是通過哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是O(1)

Redis中的一個(gè)集合中最多存儲(chǔ)2^(32)-1個(gè)成員

// redis set 無序集合$redis- sadd($key, val1 , val2 // 向集合中添加多個(gè)元素$redis- scard($key); // 獲取集合元素個(gè)數(shù)$redis- spop($key); // 移除并獲取集合內(nèi)隨機(jī)一個(gè)元素$redis- srem($key, val1 , val2 // 移除集合的多個(gè)元素$redis- sismember($key, val1 // 判斷元素是否存在于集合內(nèi)
Redis有序集合(sorted set)

Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復(fù)的成員

不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)。redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序

有序集合的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)

集合是通過哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是O(1)。 集合中最大的成員數(shù)為2^(32)-1

// redis sorted set 有序集合// 有序集合里的元素都和一個(gè)分?jǐn)?shù)score關(guān)聯(lián),就靠這個(gè)分?jǐn)?shù)score對(duì)元素進(jìn)行排序$redis- zadd($key, $score1, $val1, $score2, $val2); // 向集合內(nèi)添加多個(gè)元素$redis- zcard($key); // 獲取集合內(nèi)元素總數(shù)$redis- zcount($key, $minScore, $maxScore); // 獲取集合內(nèi)分類范圍內(nèi)的元素$redis- zrem($key, $member1, $member2); // 移除集合內(nèi)多個(gè)元素
Redis HyperLogLog

Redis HyperLogLog 是用來做基數(shù)統(tǒng)計(jì)(計(jì)算數(shù)據(jù)集中不重復(fù)元素的個(gè)數(shù))的算法,HyperLogLog 的優(yōu)點(diǎn)是,在輸入元素的數(shù)量或者體積非常非常大時(shí),計(jì)算基數(shù)所需的空間總是固定 的、并且是很小的

在 Redis 里面,每個(gè) HyperLogLog 鍵只需要花費(fèi) 12 KB 內(nèi)存,就可以計(jì)算接近 2^(64)個(gè)不同元素的基 數(shù)。這和計(jì)算基數(shù)時(shí),元素越多耗費(fèi)內(nèi)存就越多的集合形成鮮明對(duì)比

因?yàn)?HyperLogLog只會(huì)根據(jù)輸入元素來計(jì)算基數(shù),而不會(huì)儲(chǔ)存輸入元素本身,所以 HyperLogLog不能像集合那樣,返回輸入的各個(gè)元素

$redis- pfAdd( key1 , array( elem1 , elem2 // 添加指定元素到HyperLogLog中$redis- pfAdd( key2 , array( elem3 , elem2 // 將多個(gè)HyperLogLog合并為一個(gè)HyperLogLog$redis- pfMerge( key3 , array( key1 , key2 $redis- pfCount( key3 // 返回HyperLogLog的基數(shù)估計(jì)值: int(3)        

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 玉溪市| 锡林浩特市| 公主岭市| 汝城县| 罗山县| 湘潭县| 封开县| 德州市| 汉中市| 承德县| 开封县| 当阳市| 定日县| 星座| 巴林左旗| 视频| 沂水县| 沁源县| 嘉定区| 阿拉善盟| 大兴区| 新化县| 彰化县| 聊城市| 灵山县| 张家川| 青岛市| 双桥区| 石嘴山市| 湖州市| 渑池县| 高青县| 三河市| 河间市| 揭东县| 娱乐| 新源县| 临洮县| 佛学| 博爱县| 墨竹工卡县|