1.什么是redis
redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止redis支持的鍵值數據類型如下字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)
2.redis的應用場景
緩存(數據查詢、短連接、新聞內容、商品內容等等)。(最多使用)
分布式集群架構中的session分離。
聊天室的在線好友列表。
任務隊列。(秒殺、搶購、12306等等)
應用排行榜。
網站訪問統計。
數據過期處理(可以精確到毫秒)
3.redis的安裝
下面介紹在CentOS環境下,Redis的安裝與部署,redis從3.0版本以后增加了集群功能。
步驟如下:
由於Redis是用C語言編寫,所以編譯時需要gcc,
yum install gcc-c++
通過官網下載 地址:http://download.redis.io/releases/redis-5.0.0.tar.gz
或 使用linux wget命令:wget http://download.redis.io/releases/redis-5.0.0.tar.gz
把源碼包上傳到linux服務器,在上傳的目錄下進行解壓
tar -zxvf redis-5.0.0.tar.gz
進入解壓后的目錄進行編譯make,指定目錄安裝make install 如 /usr/local/redis
cd redis-5.0.0/
make (這里進redis-5.0.0/目錄下直接make編譯就好了)
make install PREFIX=/usr/local/redis (指定編譯路徑)
進入安裝目錄bin下
cd /usr/local/redis/bin
此時的目錄結構是這樣的
- redis-benchmark redis性能測試工具
- redis-check-aof AOF文件修復工具
- redis-check-rdb RDB文件修復工具
- redis-cli redis命令行客戶端
- redis.conf redis配置文件
- redis-sentinal redis集群管理工具
- redis-server redis服務進程
4.啟動Redis
1.前端模式啟動
/usr/local/redis/bin/redis-server
或 cd /usr/local/redis/bin 運行 ./redis-server
前端模式啟動的缺點是ssh命令窗口關閉則redis-server程序結束,故不推薦使用此方法。
2.后端模式啟動
1)從redis的源碼目錄中復制redis.conf到redis的安裝目錄bin下。
cp /root/redis-5.0.0/redis.conf /usr/local/redis/bin
2)修改配置文件 (是否后台啟動)
vim /usr/local/redis/bin/redis.conf
找到 daemonize 按i 進入編輯模式 把no 改為 yes
按ESC + :wq 保存退出
執行如下命令啟動redis:
cd /usr/local/redis/bin
./redis-server ./redis.conf
3.查看是否啟動成功
ps aux|grep redis
redis默認端口為 6379,可更改redis.conf文件,修改端口號
5. 關閉redis
強行終止redis進程可能會導致redis持久化數據丟失。
正確停止Redis的方式應該是向Redis發送SHUTDOWN命令,
命令為:
cd /usr/local/redis
./bin/redis-cli shutdown
強行終止redis
pkill redis-server
6.讓redis開機自啟
方法一:
1) vim /etc/init.d/redis 編寫腳本 (輸入下面的代碼)
# chkconfig: 2345 10 90
# description: Start and Stop redis
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379 #實際環境而定
EXEC=/usr/local/redis/bin/redis-server #實際環境而定
REDIS_CLI=/usr/local/redis/bin/redis-cli #實際環境而定
PIDFILE=/var/run/redis.pid
CONF="/usr/local/redis/bin/redis.conf" #實際環境而定
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed."
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE exists, process is not running."
else
PID=$(cat $PIDFILE)
echo "Stopping..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
while [ -x $PIDFILE ]
do
echo "Waiting for Redis to shutdown..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
2) 配置開機啟動
chmod 755 /etc/init.d/redis #設置文件redis的權限,讓Linux可以執行 chkconfig redis on #開啟服務自啟動
chkconfig --list #查看所有注冊的腳本文件
service redis start #啟動
service redis stop #關閉redis
3) 檢測是否成功
reboot #重啟--如果是centos6.5學過來的,init 0與init 6一樣在centos7適用
ps aux|grep redis #查看redis進程是否存在
方法二:(centos7推薦)
centos 7以上是用Systemd進行系統初始化的,Systemd 是 Linux 系統中最新的初始化系統(init),它主要的設計目標是克服 sysvinit 固有的缺點,提高系統的啟動速度。
Systemd服務文件以.service結尾,比如現在要建立redis為開機啟動,如果用yum install命令安裝的,yum命令會自動創建redis.service文件,直接用命令systemcel enable redis.service設置開機啟動即可
1.在系統服務目錄里創建redis.service文件
vim /etc/systemd/system/redis.service
寫入以下內容:
[Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
注意:ExecStart配置成自己的路徑
配置描述:
Description:描述服務
After:描述服務類別
[Service]服務運行參數的設置
Type=forking是后台運行的形式
ExecStart為服務的具體運行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]的啟動、重啟、停止命令全部要求使用絕對路徑
[Install]運行級別下服務安裝的相關設置,可設置為多用戶,即系統運行級別為3
重載系統服務:systemctl daemon-reload
2. 測試並加入開機自啟
先關閉redis-server
systemctl stop redis.service
開啟redis-server
systemctl start redis.service #如果服務是開啟狀態,使用此命令會啟動失敗。
3. 開啟成功,將服務加入開機自啟
systemctl enable redis.service #注意后面不能跟空格
4. reboot #重啟
5. 查看服務運行狀態:systemctl status redis.service
6. 全部命令
systemctl start redis.service #啟動redis服務
systemctl enable redis.service #設置開機自啟動
systemctl disable redis.service #停止開機自啟動
systemctl status redis.service #查看服務當前狀態
systemctl restart redis.service #重新啟動服務
systemctl list-units --type=service #查看所有已啟動的服務
7.測試代碼
引入jar包:
代碼:
public class JedisTest { @Test public void testJedisSingle() { //創建一個jedis的對象。 Jedis jedis = new Jedis("172.20.10.7", 6379); //調用jedis對象的方法,方法名稱和redis的命令一致。 jedis.set("key1", "jedis test"); String str = jedis.get("key1"); System.out.println(str); //關閉jedis。 jedis.close(); } /** * 使用連接池 */ @Test public void testJedisPool() { //創建jedis連接池 JedisPool pool = new JedisPool("172.20.10.7", 6379); //從連接池中獲得Jedis對象 Jedis jedis = pool.getResource(); String str = jedis.get("key1"); System.out.println(str); //關閉jedis對象 jedis.close(); pool.close(); } }
至此redis安裝配置完畢。
good luck !