redis的數據結構

redis數據結構

1. 五種數據類型:常用的是字符串和哈希
1. 字符串(String)
2. 哈希(hash)
3. 字符串列表(list)
4. 字符串集合(set)
5. 有序字符串集合(sorted set)
2. redis的存儲數據是以鍵值對的形式
key定義的注意點:
1. 不要過長
2. 不要過短
3. 統一的命名規範
3. 存儲String
1. 二進制安全的,存入和獲取的數據相同
2. value最多可以容納的數據長度是512M
3.  存儲String常用命令
	1. 賦值 :set ,get,getset
	2. 刪除:del
	3. 擴展命令decrby,appand(拼湊字符串,在原有的後面銜接,如果沒有新建)
	4. 取值
	5. 數值增減::incr(遞增,加1),decr(遞減,減1,將指定的value值遞減1,如果值不存在,就會把初始值設置爲0,decr之後,這個值就變爲1,如果value值不能轉換成整型,會報錯誤信息),incrby(指定變化的數值),
4. 存儲哈希
1. String Key和String Value 的map 容器(適合存儲值對象的信息,例如用戶名、密碼、年齡等。。。,如果只有非常少的字段,也會佔有非常少的磁盤空間)
2. 每一個Hash可以存儲4294967295個鍵值對
3. 存儲Hash常用命令
	1. 賦值:hset,hmset
	2. 刪除:hdel,
	3. 自學命令:hexists(是否存在),hlen(獲取屬性個數),Hkeys(所有屬性名稱),Hvals(獲取所有值)
	4. 取值:hget,hgetall
	5. 增加數字:hincrby
5. 存儲list:鏈表
1. Arraylist使用數組方式
2. LinkList使用雙向鏈接當時
3. 雙向鏈表中增加數據
4. 雙向鏈表中刪除數據
5. 存儲list常用命令
		1. 兩端添加:lpush,rpush
		2. 查看列表:lrange
		3. 兩端彈出:lpop,rpop
		4. 獲取列表元素個數:llen
		5. 擴展命令:lpushx(鏈表存在插入頭部),rpushx,lrem(刪除元素,如果count大於0,刪除count個爲value的值,count小於0,從後面向前面遍歷,count等於0,刪除所有等於value的元素),lset(在某個index插入具體值),linsert(在某個元素前後插入內容,before,after),rpoplpush(將鏈表中的尾部元素彈出並添加到頭部)
	6. redis鏈表常用於消息隊列的一些服務,來完成多個程序之間的消息交互,若正在執行lpush---爲生產者,lpop--消費者,取出未使用就容易導致業務數據丟失或者業務狀態的不一致,可以同過rpoplpush命令,消費者程序在主消息隊列中取出元素之後,再將它插入到一個備份的隊列當中,直到消費者完整正常的邏輯處理後,再講消息從備份隊列中刪除,這樣可以提供一個守護的線程,當發現備份中過期,便放到主隊列中,以備後續其他進行使用和處理

6. 存儲set

1. 和list類型不同的是,set集合不允許出現重複的元素
2. 在服務器端完成多個集合之間的聚合操作,提高了效率
3. set可包含的最大元素數量是4294967295
4. 常用命令
	1. 添加/刪除元素:sadd,srem,
	2. 獲取集合中的元素:smembers(有哪些數字),sismember(是否存在數字)
	3. 集合中的差集運算:sdiff
	4. 集合中的交集運算:sinter
	5. 集合中的並集運算:sunion
	6. 擴展命令:scard(獲得set中的成員數量),srandmember(隨機的成員),sdiffstore(將相差的值存儲),sinterstore(將交集存儲),sunionstore(將並集存儲)
5. redis的set應用場景:
		*  跟蹤一些具有唯一性的數據 * ,例如博客的IP,存儲到set中,保證唯一性,服務器端聚合操作方便高效,可以 * 用於維護數據對象之間的關聯關係 *,例如所有購買電子設備的客戶的ID,被存儲到一個指定的set當中,購買另外一種的ID,存儲另外一個set中,爲了獲取同事購買兩種的用戶,可以使用交集
7. 存儲sorted-set
  1. sorted-set和set的區別: sorted帶有分數
  2. sorted-set中的成員在集合中的位置是有序的:主要應用在遊戲的排名上,微博的熱搜上
  3. 常用命令:
    1. 添加元素:zadd
    2. 獲取元素:zscore(獲取分數),zcard(成員數量)
    3. 刪除元素:zrem
    4. 範圍查詢:zrange,zreange–withscores(帶分數),zrerange(顛倒顯示),zremrangebyrank(按照排名的範圍進行刪除),zrangebyscore
    5. 擴展命令:zincreby,zscore,zcount
  4. 使用場景:用於在線遊戲的積分,使用zadd—zcount
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章