網(wǎng)站建設(shè)的主要功能有哪些圖片優(yōu)化
文章目錄
- 環(huán)境安裝與配置
- redis發(fā)布-訂閱相關(guān)命令
- redis發(fā)布-訂閱的客戶端編程
- redis的訂閱發(fā)布的例子
環(huán)境安裝與配置
sudo apt-get install redis-server # ubuntu命令安裝redis服務(wù)
ubuntu通過(guò)上面命令安裝完redis,會(huì)自動(dòng)啟動(dòng)redis服務(wù),通過(guò)ps命令確認(rèn):
wxncom@wxncom-virtual-machine:~$ ps -ef | grep redis
redis 6594 1 0 16:28 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
wxncom 7003 1827 0 16:29 pts/0 00:00:00 grep --color=auto redis
可以看到redis默認(rèn)工作在本地主機(jī)的6379端口上。
而mysql默認(rèn)運(yùn)行在3306端口上.
redis發(fā)布-訂閱相關(guān)命令
redis支持多種數(shù)據(jù)結(jié)構(gòu),如:
字符串、list列表、set集合、map映射表等結(jié)構(gòu)。
啟動(dòng)redis-cli客戶端,連接redis server體驗(yàn)一下數(shù)據(jù)緩存功能,如下:
redis存儲(chǔ)普通key-value:
wxncom@wxncom-virtual-machine:~$ redis-cli
s127.0.0.1:6379> set "abc" "hello world!"
OK
127.0.0.1:6379> get "abc"
"hello world!"
127.0.0.1:6379>
subscribe 13 // 訂閱通道
publish 13 "message" //向某個(gè)通道發(fā)送消息
redis發(fā)布-訂閱的客戶端編程
redis支持多種不同的客戶端編程語(yǔ)言,例如Java對(duì)應(yīng)jedis、php對(duì)應(yīng)phpredis、C++對(duì)應(yīng)的則是
hiredis。下面是安裝hiredis的步驟:
git clone https://github.com/redis/hiredis
從github上下載hiredis客戶端,進(jìn)行源碼
編譯安裝
wxncom@wxncom-virtual-machine:~/redis$ git clone https://github.com/redis/hiredis
Cloning into 'hiredis'...
fatal: unable to access 'https://github.com/redis/hiredis/': Failed to connect to github.com port 443: Connection refused
wxncom@wxncom-virtual-machine:~/redis$ git clone https://github.com/redis/hiredis
Cloning into 'hiredis'...
remote: Enumerating objects: 4682, done.
remote: Counting objects: 100% (239/239), done.
remote: Compressing objects: 100% (113/113), done.
remote: Total 4682 (delta 140), reused 177 (delta 126), pack-reused 4443
Receiving objects: 100% (4682/4682), 1.68 MiB | 1.93 MiB/s, done.
Resolving deltas: 100% (2924/2924), done.
wxncom@wxncom-virtual-machine:~/redis$ ls
hiredis
wxncom@wxncom-virtual-machine:~/redis$ cd hiredis/
wxncom@wxncom-virtual-machine:~/redis/hiredis$
如果遇到下面這個(gè)情況,多試幾次,github那邊的服務(wù)器很拉胯的,你需要多嘗試幾次,來(lái)建立tcp連接(http協(xié)議使用的是 : 基于TCP的傳輸層協(xié)議)
wxncom@wxncom-virtual-machine:~/redis$ git clone https://hub.fastgit.org/redis/hiredis
Cloning into 'hiredis'...
fatal: unable to access 'https://hub.fastgit.org/redis/hiredis/': Failed to connect to hub.fastgit.org port 443: Connection refused
- cd hiredis
- make
wxncom@wxncom-virtual-machine:~/redis/hiredis$ make
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic alloc.c
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic net.c
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic hiredis.c
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic sds.c
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic async.c
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic read.c
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic sockcompat.c
cc -shared -Wl,-soname,libhiredis.so.1.2.1-dev -o libhiredis.so alloc.o net.o hiredis.o sds.o async.o read.o sockcompat.o
ar rcs libhiredis.a alloc.o net.o hiredis.o sds.o async.o read.o sockcompat.o
cc -std=c99 -c -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic test.c
cc -o hiredis-test -O3 -fPIC -Wall -Wextra -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -Werror -g -ggdb -pedantic -I. test.o libhiredis.a
Generating hiredis.pc for pkgconfig...
wxncom@wxncom-virtual-machine:~/redis/hiredis$
編譯成功!
- sudo make install
拷貝生成的動(dòng)態(tài)庫(kù)到/usr/local/lib目錄下!
- sudo ldconfig /usr/local/lib
然后.感興趣的話,或者工作用到了,
可以繼續(xù)學(xué)一下:如何通過(guò)C++使用hiredis客戶端進(jìn)行subscribe 和publish編程
簡(jiǎn)單來(lái)說(shuō) , hiredis就是一個(gè)c++可用的redis庫(kù)(但是底層居然是用c語(yǔ)言編寫的),現(xiàn)在處于一個(gè)知識(shí)爆炸的時(shí)代,做什么都是庫(kù),需要造的輪子越來(lái)越少了
redis的訂閱發(fā)布的例子
比如:
- qq聊天 : 有人上線了,我們就訂閱他的通道channel,關(guān)注他的操作 ; 假如別人給他發(fā)了消息 , 我們就通過(guò)訂閱的管道把消息發(fā)給他.