Redis in docker

1砌梆、redis image

概念 內(nèi)容
redis官網(wǎng) https://redis.io/topics/persistence
什么是redis Redis is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server.
鏡像源 https://hub.docker.com/_/redis?tab=description
拉取鏡像 docker pull redis
端口與安全 For the ease of accessing Redis from other containers via Docker networking, the "Protected mode" is turned off by default. This means that if you expose the port outside of your host (e.g., via -p on docker run), it will be open without a password to anyone. It is highly recommended to set a password (by supplying a config file) if you plan on exposing your Redis instance to the internet. For further information, see the following links about Redis security:

2劝贸、啟動redis服務(wù)

持久化數(shù)據(jù)庫文件的啟動
docker run --name some-redis -d redis redis-server --appendonly yes -v /docker/host/dir:/data
命令行客戶端 連接 redis服務(wù)
docker run -it --network some-network --rm redis redis-cli -h some-redis
// --rm 與 -d 類似,-d是命令行歷史保留, --rm是歷史不保留侨嘀,在stop后容器自動刪除
自定義redis的配置文件
docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
一個例子
root@jd-bj-bjy-tianren-test01:~/myredis# docker run --name redis-server --network host -v /root/myredis/data:/data -d redis redis-server --appendonly yes
root@jd-bj-bjy-tianren-test01:~/myredis# docker run -it --network host --name redis-cli --rm redis redis-cli -h localhost
localhost:6379> 
localhost:6379> get
(error) ERR wrong number of arguments for 'get' command
localhost:6379> get 123
(nil)
localhost:6379> set 123 0090909
OK
localhost:6379> get 123
"0090909"

3妨猩、redis 的數(shù)據(jù)類型

image.png

4、redis 的常用命令

功能和驗證都很簡單遭笋,跑個redis-server坝冕、redis-cli,幾分鐘就能很好的理解

1瓦呼、遠(yuǎn)程連接到數(shù)據(jù)庫
redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
2喂窟、string 類型的 key-value 的命令
get key
set key val
exists key
expire key 100
persist key
ttl key
rename key
incr/decr/append key
keys partten
3、hash類型的 json 的命令
適用于存儲對象,json對象
{
    obkey1  : "obval1",
    obkey2  : "obval2"
}
hmset key obkey1 "obval1" obkey2 "obval2"
hgetall key
hkeys key
hvals key
hget key obkey1
hset key obkey1 "obval1"
heixsts key obkey1
4磨澡、list類型是 列表命令
列表方式存儲的數(shù)據(jù)
lpush key val1 val2 val3
lpop key
llen key
lrem key 4 val3
lindex key 2
lset key 4 val4
lrange key 0 5
5碗啄、set類型的 集合命令
集合內(nèi)數(shù)據(jù)元素是唯一的,不能重復(fù)
sadd key val1 val2 val3 val4
srem key val1 val2
smembers key
scard key

sunion key1 key2
sinter key1 key2
sdiff key1 key2
6稳摄、事務(wù)

redis 通過事務(wù) 可以一次執(zhí)行多條命令稚字,有如下特點:
1、順序性厦酬, 多條命令順序執(zhí)行
2胆描、假原子性, 多條命令作為一個整體執(zhí)行(不會被其他的用戶的命令在順序中插入)
3弃锐、錯不回滾袄友, 中間某條執(zhí)行失敗不會導(dǎo)致回滾,后面的命令繼續(xù)執(zhí)行

實現(xiàn)一個事務(wù)的流程
1霹菊、開始事物 multi
2剧蚣、命令入隊 commad1 commad2 。旋廷。鸠按。
3、執(zhí)行事物 exec

關(guān)于事物原子性:
單個 Redis 命令的執(zhí)行是原子性的饶碘,但 Redis 沒有在事務(wù)上增加任何維持原子性的機(jī)制目尖,所以 Redis 事務(wù)的執(zhí)行并不是原子性的。

事務(wù)可以理解為一個打包的批量執(zhí)行腳本扎运,但批量指令并非原子化的操作瑟曲,中間某條指令的失敗不會導(dǎo)致前面已做指令的回滾,也不會造成后續(xù)的指令不做豪治。

localhost:6379> MULTI 
OK
localhost:6379> set key abc
QUEUED
localhost:6379> set key2 abc2
QUEUED
localhost:6379> exec
1) OK
2) OK


discard
watch key1 key2 ...
unwatch
7洞拨、訂閱

這個功能有點坑,subscribe channel 之后無法退出(docker里ctrl+c無效)
多用戶的連接也不怎么好使
多用戶的發(fā)布和訂閱沒驗證成功

5负拟、用nodejs 客戶端訪問 redis-server 烦衣,存儲和查詢數(shù)據(jù)

redis 包含了全方位的客戶端sdk ,java掩浙、python花吟、go、c++厨姚、nodejs等接口衅澈,
可官網(wǎng)查詢 https://redis.io/clients

這里簡要說一下 nodejs 的 其中一個node_redis sdk接口: https://github.com/NodeRedis/node_redis

npm install redis

使用案例如下 
var redis = require("redis"),
    client = redis.createClient();

// if you'd like to select database 3, instead of 0 (default), call
// client.select(3, function() { /* ... */ });

client.on("error", function (err) {
    console.log("Error " + err);
});

client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
    console.log(replies.length + " replies:");
    replies.forEach(function (reply, i) {
        console.log("    " + i + ": " + reply);
    });
    client.quit();
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市遣蚀,隨后出現(xiàn)的幾起案子矾麻,更是在濱河造成了極大的恐慌纱耻,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件险耀,死亡現(xiàn)場離奇詭異弄喘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)甩牺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門蘑志,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贬派,你說我怎么就攤上這事急但。” “怎么了搞乏?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵波桩,是天一觀的道長。 經(jīng)常有香客問我请敦,道長镐躲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任侍筛,我火速辦了婚禮萤皂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匣椰。我一直安慰自己裆熙,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布禽笑。 她就那樣靜靜地躺著入录,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佳镜。 梳的紋絲不亂的頭發(fā)上纷跛,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音邀杏,去河邊找鬼。 笑死唬血,一個胖子當(dāng)著我的面吹牛望蜡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拷恨,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼脖律,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腕侄?” 一聲冷哼從身側(cè)響起小泉,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤芦疏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后微姊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酸茴,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年兢交,在試婚紗的時候發(fā)現(xiàn)自己被綠了薪捍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡配喳,死狀恐怖酪穿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晴裹,我是刑警寧澤被济,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站涧团,受9級特大地震影響只磷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜少欺,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一喳瓣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赞别,春花似錦畏陕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至崎页,卻和暖如春鞠绰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背飒焦。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工蜈膨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牺荠。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓翁巍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親休雌。 傳聞我的和親對象是個殘疾皇子灶壶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361