Redis 遠程字典服務 ——Nosql技術
一、五種基本的資料類型
String list hash set sorted set(排序集合)
二、五種特性
(1)inmemory 在記憶體中 與cache類似,是一個以key-value儲存的緩衝系統
(2)弱化事務 基本是沒有事務概念的,只有在某些地方會對事務進行遍曆,而且它的遍曆也不是遇到錯誤就停下來,而是遇到錯誤不管也不處理。
(3)叢集環境
(4)Key-value查詢
(5)指令碼語言支援
三、
redis是一個單線程的系統,
支援持久化(cache不支援持久化),
訂閱/發布功能
(
Redis 的訊息佇列功能
A B C
如果A,B,C伺服器都訂閱redis的某個key,那麼就可以通過A在這個key裡發布資訊,放到redis的訊息佇列,redis會把訊息推送到所有訂閱了這個key的B,C伺服器。Redis本身是不儲存這個資料的。
)
四、redis和Memcache的區別
Memcache不能叢集,最大為1M
Redis可以叢集,最大為1G
五、Redis 常用於web伺服器和資料庫之間,充當緩衝系統,因為其具有持久化功能,可以串連資料庫,大量的資料放在redis裡面緩衝,web伺服器或者應用與redis緩衝進行互動,可提高程式執行的效能。
Web伺服器——redis伺服器——資料庫
六、redis有一個第三方的圖形介面 Redis Desktop Manager。不過並不是特別的好用。
七、Redis資料結構的各種命令
http://redisdoc.com/ redis命令參考
String 類型
List類型
Lpush Rpush Lpop Rpop Irange BLpop Brpop阻塞版
八、Session管理
九、叢集服務
1、解決單節點故障
2、讀寫分離
Redis share
Web伺服器 ——redis mater
Redis share
十、Redis充當Message Queue
訊息佇列 實現訂閱/發布功能
十一、redis充當資料庫伺服器
十二、Redis目前需要解決的問題就是記憶體問題。
記憶體有限,遊戲資料龐大,如何把redis記憶體中的資料寫入到資料庫中,或者從資料庫中讀出來資料。
1、序列化到本地
2、Redis是否支援資料寫入到記憶體中
3、叢集擴容,不過這隻能解決容量的問題,不能解決遊戲中大量死資料的問題
解決記憶體問題:主要還是要從如果從遊戲死資料中分離出來活躍使用者的角度下手。
方法:合服的時候清除死資料,判斷玩家playerBean資料是否超過某一時間,超過時間設定玩家playCache裡狀態標識位為非法。在從資料庫大量load玩家playerCache資料到記憶體中,狀態非法和資料為空白的被剔除掉。
4、架構解決
Redis的清除到期機制:
每次隨機10個key,閒置時間不停的執行。記憶體緊張的時候會全部遍曆,刪除到期的key來釋放記憶體。