1,redis是一非關係型資料庫,key-value,高可用(performance),支援記憶體持久化到磁碟,主從複製,發布訂閱;
2,redis 支援5中資料結構:strings,lists,sets,hashes and zsets
string: strings,intergers,or floating-point values
list: linked list of strings
set:unorderd collection of unique strings
hash: unordered hash table of keys to values
3,redis-cli.exe中基本操作;
> set a 11
>get a
>del a
(1) list 操作:
add操作:rpush listname value,lpush listname value(其中 r 和 l 表示從左邊還是右邊加入)
列出全部資料:lrange list-key 0 -1
ltrim修剪,類似substring():ltrim listkey 2 -1; 從第三位開支知道最後
(2) set操作:
sadd setname value
列出全部資料
smember set-key
(3) hashs 操作:
put操作: hset hash-key key value
列印所有:hgetall hash-key;
刪除乙個:hdel hash-key key
(4) 排序 zadd zrange,zrangebyscore zrem
新增:zadd zset-key score key;
按照score 來進行排序:zrange zset-key 0 -1 withscores
(5) hmset:用於同時存放多個filed(key,value)進入hash中;
4,redis 發布\訂閱模式(pub\sub):
jedispool jedispool = new jedispool(new jedispoolconfig(),ip,port);
jedis jedis = jedispool.getresource();
string channelname = "redischannel";
class subcriber extends jedispubsub
} 建立發布執行緒和訂閱執行緒,分別做一下的事情
jedis.publish(channel,content);//發布
jedis.subscribe(subcriber,channel);//訂閱
在使用redis的發布和訂閱的時候,有兩個問題:
(a)當資料過大,redis 的吞吐量可能不足以keep a large outgoing buffer,資料過大可能導致redis 變的非常慢,甚至是crash,系統會自動殺掉redis(在window下 啟動了100個執行緒一直傳送資料,100個執行緒監聽,cpu是100%)
(b)監聽redis的伺服器,可能在某個時候連線斷開,jedis能夠在動重連,但是在連線的過程中,可能redis上向subcriber已經傳送的了資料了,但是接受方程序沒有接受到訊息,導致訊息丟失;
5,設定 transaction(事物)
pipline pip = jedis.piplined();
pip.zadd(...)
6,設定key過期時間
jedis.expire(key,time)
jedis.ttl(key)//剩餘多少時間
PHP,thinkphp學習筆記之一 基
第一,什麼是php?php就是免費的,開源的,mvc開發模式,物件導向的,輕量級的語言 m model 模型 工作 負責資料操作 v viel 檢視模板,工作 就是負責前台 c controller 模組功能 控制器 工作 負責描述功能 第二 環境搭建 安裝 wampserver 整合環境 裝好後在...
華為網路通訊基一
2.網路通訊的簡述原理 1 應用程式生成需要傳遞的資訊。2 應用程式將資料打包成原始的 資料載荷 3 在原始的資料載荷的前後分別加上 頭部 和 尾部 形成 報文 報文頭部中最重要的資訊是接受者的資訊,亦即 目的位址 在乙個資訊單元的基礎上,增加一些新的資訊段,使其形成乙個新的資訊單元,這個過程稱為 ...
RabbitMQ RabbitMQ的一些基礎概念
工作中使用的是rabbitmq,需要對其進行熟悉。使用之前,弄清楚它是什麼東西,解決什麼問題。開發中,有一些任務並無須實時執行,比如 如上,儲存日誌表 傳送郵件等任務的實時性並不強,在系統繁忙時有可能阻塞,堵塞容易導致任務失敗。如果我們把它們放入佇列中,輪候執行,減低耦合的同時,是不是也緩解了系統壓...