寫在前面
很早之前,就有不少小伙伴微信留言說:冰河,你能不能寫一個Redis專欄啊,我最近在學習Redis,看書看不下去,學習視頻又覺得視頻太長了,還是看你的文章比較給力!哈哈,原來我寫的文章能夠讓小伙伴們有這么強的動力學習啊!終於安排到寫【Redis專題】了。今天是【Redis專題】的開篇,寫些什么呢?先簡單的介紹下Redis並教大家如何在單機環境中安裝Redis吧,也算是對【Redis專題】的開篇吧!
如果文章對你有所幫助,請不要吝惜你的點贊、在看、留言和轉發,你的支持是我持續創作的最大動力!
Redis介紹
學習一項新技術和一個新的框架之前,大部分的套路都是先對這項技術和框架做一個簡單的介紹。這次,我也隨波逐流一次吧,對Redis做一個整體的介紹。
基於鍵值對的存儲系統:字典形式。
五種數據結構:字符串(String),Hash(字典),列表(List),集合(Set),有序集合(Sorted Set)。
Redis大部分時間用來做緩存,因為速度快(內存數據庫,單線程,單進程,Redis 6.0支持多線程,后面我們會詳細講Redis 6.0的新特性 )。
Redis的使用場景
- 做緩存:String類型最多,其次是hash(字典),value值使用的最多的是json格式。
- 計數(自增):點贊數,點踩數,訪問數,全局計數等。
- 消息隊列:列表類型,先進先出或者先進后出,bloop。這個可以參考我寫的一個開源框架,地址為:https://github.com/sunshinelyz/mykit-delay。
- 發布訂閱(觀察者模式)
- 排行榜:有序集合
- 分布式鎖:可以關注【冰河技術】微信公眾號,參考我寫的《【高並發】高並發分布式鎖架構解密,不是所有的鎖都是分布式鎖!!》,也可以參考我寫的一個分布式鎖插件,鏈接地址為:https://github.com/sunshinelyz/mykit-lock。
- 做附近的人
- 布隆過濾器
- 統計在線人數(Bitmap)等等
以下使用場景也是5大數據類型中的一種:
- BitMaps位圖:布隆過濾器 本質是字符串
- HyperLogLog:超小內存唯一值計數,12kb HyperLogLog 本質是 字符串
- GEO:地理信息定位 本質是有序集合
主從復制:主服務器和從服務器,Redis中的數據可以從主服務器同步到從服務器上。
高可用和分布式:
- 2.8版本以后使用redis-sentinel支持高可用(做哨兵)
- 3.0版本以后支持分布式
Redis的安裝和啟動
這里,我們在CentOS服務器上安裝Redis 5.0.7版本。
1.下載安裝Redis
#下載
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
#解壓
tar -zxvf redis-5.0.7.tar.gz
#建立軟連接(生成一個redis文件夾)
ln -s redis-5.0.7 redis
cd redis
make && make install
我們可以在Redis的src目錄下看到如下命令。這里,我也對命令的作用進行了簡單的說明
#redis-server--->redis服務器
#redis-cli---》redis命令行客戶端
#redis-benchmark---》redis性能測試工具
#redis-check-aof--->aof文件修復工具
#redis-check-dump---》rdb文件檢查工具
#redis-sentinel---》sentinel服務器,哨兵
值得說明的是:Redis作者對windows維護不好,window自己有安裝包。
2.三種啟動Redis服務的方式
(1)最簡啟動法
Redis中最簡單的啟動方法就是在命令行中直接輸入如下命令。
redis-server #只要運行這一條命令服務端就啟動了
啟動效果如下圖所示。
可以通過如下幾種命令來查看Redis的運行情況。
ps -ef|grep redis #查看進程
netstat -antpl|grep redis #查看端口
redis-cli -h ip -p port ping #命令查看
(2)動態參數啟動法
這里,我們以動態增加Redis的啟動端口為例,比如我們將Redis啟動后監聽的端口設置為6379,如下所示。
#動態參數啟動
redis-serve --port 6379 #啟動,監聽6379端口 默認對應的端口號是6379
這里,我們在Redis啟動時,設置了動態端口。當然,我們還可以在Redis啟動時,設置其他的動態參數,在【Redis專題】后續的文章中,我們會詳細說明Redis的動態參數。
3.配置文件啟動法(最常用的啟動方式)
Redis啟動之后,可以通過redis-cli連接,在服務器命令行輸入如下命令可以查詢到默認的所有配置。
config get *
配置文件中一些常用的配置參數如下所示。
daemonize --》是否是守護進程啟動(no|yes)
port ---》端口號
bind ---》綁定的主機名或IP地址
logfile --》redis系統日志
dir --》redis工作目錄
protected-mode --》是否允許外界訪問
例如,我們創建一個redis-6379.conf配置文件,文件的內容如下所示。
daemonize yes #是否以后台形式運行
port 6379 #綁定端口號
bind 0.0.0.0 #設置地址
protected-mode no #設置允許外界訪問
dir "/data/redis/data" #工作目錄
logfile "./redis-6379.log" #日志位置
然后,我們可以在服務器的命令行使用如下命令指定Redis的配置文件來啟動Redis服務。
redis-server redis-6379.conf
總結三種啟動Redis的方式
這里,我們還是對Redis的三種啟動方式做一個簡單的總結:
- 直接命令行:redis-server
- 動態參數方式:redis-server --port 6379 #這里是添加端口參數
- 配置文件方式:redis-server 啟動配置文件名
3.客戶端連接方式
(1)最簡連接法
如果Redis服務器和Redis客戶端在同一台服務器上,並且Redis服務器使用的是默認端口6379,則可以使用最簡連接法。此時,只需要在服務器命令行輸入如下命令即可。
redis-cli
(2)指定IP和端口連接
無論Redis服務器和Redis客戶端是否在同一台服務器,也不管是否修改過Redis的端口號,都可以使用指定IP和端口的方式來連接Redis服務。這種方式可以使用類似如下命令的形式連接Redis服務端。
redis-cli -h 127.0.0.1 -p 6379 #加上ip地址或者端口號
(3)使用可視化工具連接Redis
除了上述使用redis-cli連接Redis的方式,還可以使用可視化工具來連接Redis。例如,我們可以使用RedisDesktopManager這個可視化工具來連接Redis。如下所示。
關閉后台Redis方法
當我們不需要Redis的時候,就可以關閉后台運行的Redis服務,我們可以通過如下命令來關閉后台運行的Redis服務。
(1)查看運行的Redis進程號
使用如下命令查看運行的Redis進程號。
ps -ef | grep redis-server | grep 6379
或者
ps -ef | grep redis-server
或者
ps -ef |grep redis
(2)殺掉查詢到的進程號
kill Redis進程號
命令腳本化
當然,上述安裝Redis、啟動Redis、連接Redis和關閉Redis的命令都可以寫成一個腳本文件,我們只需要運行腳本文件即可自動化安裝Redis、啟動Redis、連接Redis和關閉Redis。這里,如何編寫腳本就留給小伙伴們自行思考吧,大家如果有什么問題可以在文末留言!!
重磅福利
關注「 冰河技術 」微信公眾號,后台回復 “設計模式” 關鍵字領取《深入淺出Java 23種設計模式》PDF文檔。回復“Java8”關鍵字領取《Java8新特性教程》PDF文檔。回復“限流”關鍵字獲取《億級流量下的分布式限流解決方案》PDF文檔,三本PDF均是由冰河原創並整理的超硬核教程,面試必備!!
好了,今天就聊到這兒吧!別忘了點個贊,給個在看和轉發,讓更多的人看到,一起學習,一起進步!!
寫在最后
如果你覺得冰河寫的還不錯,請微信搜索並關注「 冰河技術 」微信公眾號,跟冰河學習高並發、分布式、微服務、大數據、互聯網和雲原生技術,「 冰河技術 」微信公眾號更新了大量技術專題,每一篇技術文章干貨滿滿!不少讀者已經通過閱讀「 冰河技術 」微信公眾號文章,吊打面試官,成功跳槽到大廠;也有不少讀者實現了技術上的飛躍,成為公司的技術骨干!如果你也想像他們一樣提升自己的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 冰河技術 」微信公眾號吧,每天更新超硬核技術干貨,讓你對如何提升技術能力不再迷茫!