Redis in Action(一) 基本語法

2021-08-21 17:10:22 字數 1794 閱讀 3717

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,需要對其進行熟悉。使用之前,弄清楚它是什麼東西,解決什麼問題。開發中,有一些任務並無須實時執行,比如 如上,儲存日誌表 傳送郵件等任務的實時性並不強,在系統繁忙時有可能阻塞,堵塞容易導致任務失敗。如果我們把它們放入佇列中,輪候執行,減低耦合的同時,是不是也緩解了系統壓...