目錄
4、配置文件解析vim /etc/redis/6379.conf
1、數據庫類型
1-1、RDBMS
• 關係數據庫管理系統
– Relational Database Management System
– 數據按照預先設置的組織結構,存儲在物理存儲介質上。
– 數據之間可以做關聯操作
主流的RDBMS軟件
- – Oracle
- – DB2
- – WS-sqlserver
- – MySQL
1-2、NoSQL
• NoSQL(NoSQL = Not Only SQL )
– 意思是"不僅僅是SQL“
– 泛指非關係型數據庫
– 不需要預先定義數據存儲結構
– 表的每條記錄都可以有不同的類型和結構
NoSQL主流服務軟件
- – Redis
- – MongoDB
- – Memcached
- – CouchDB
- – Neo4j
- – FlockDB
2、部署redis服務
2-1、Redis介紹
• Redis
– Remode DIctionary Server(遠程字典服務器)
– 使用C語言編寫的,遵守BSD的開源軟件
– 是一款高性能的(Key/Values)分佈式內存存儲服務器
– 並支持數據持久化的NoSQL數據庫服務軟件
– 中文網站www.redis.cn
Redis特點:
- – 支持數據持久化,可以把內存裏數據保存到硬盤中
- – 不僅僅支持key/values類型的數據,同時還支持list hash set zset 類型
- – 支持master-salve 模式數據備份
2-2、安裝軟件包
rpm -q gcc gcc-c++---------檢查有沒有安裝gcc gcc-c++
yum -y install gcc gcc-c++----若沒裝則裝一下
# tar -xzf redis-4.0.8.tar.gz
# cd redis-4.0.8------進入redis目錄
#make----編譯
#make install---安裝
2-3、初始配置
[root@host151 redis-4.0.8]# ls --------編譯安裝完之後redis目錄下詳情
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@host151 redis-4.0.8 ]#./utls/install_server.sh----------初始化
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] ----選擇主配置文件名
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] ----選擇日誌文件名
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]----選擇數據庫目錄
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] ---選擇redis服務器軟件存儲路徑
Selected config:
Port : 6379-------服務端口號
Config file : /etc/redis/6379.conf----– 主配置文件
Log file : /var/log/redis_6379.log-----日誌文件
Data dir : /var/lib/redis/6379------數據庫目錄
Executable : /usr/local/bin/redis-server----redis-server程序
Cli Executable : /usr/local/bin/redis-cli-----redis-cli程序
Is this ok? Then press ENTER to go on or Ctrl-C to abort.-----回車以繼續或Ctrl-C退出
Copied /tmp/6379.conf => /etc/init.d/redis_6379-----redis啓動腳本
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server... -----------正在啓動redis服務
Installation successful! -----------安裝成功
-----------------------------服務默認初始化後就已經啓動了
2-4、啓動停止程序及查狀態
[root@host151 utils]# /etc/init.d/redis_6379 stop--------停止服務
Stopping ...
Redis stopped
[root@host151 utils]# /etc/init.d/redis_6379 status------查看服務是否運行
cat: /var/run/redis_6379.pid: 沒有那個文件或目錄
Redis is running ()---------------括號中爲空則爲沒運行
[root@host151 utils]# /etc/init.d/redis_6379 start-------啓動服務
Starting Redis server...
[root@host151 utils]# /etc/init.d/redis_6379 status------查看服務是否運行
Redis is running (6744)
[root@host151 utils]# ss -utnlp | grep 6379-----查看相關的服務端口號是否已啓動
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=6744,fd=6))
2-5、連接redis服務
[root@host151 utils]# redis-cli---------默認只能本機登陸
127.0.0.1:6379> exit
[root@host151 utils]#
2-6、修改服務使用的ip地址和端口:
scp /usr/local/bin/redis-cli 192.168.4.50:/usr/local/bin/----將redis-cli命令拷貝到客戶端50主機
/etc/init.d/redis_6379 stop-----先停服務
vim /etc/redis/6379.conf----修改主配置文件
70 bind 192.168.4.151-------將默認的127.0.0.1修改爲192.168.4.151
91 # Accept connections on the specified port, default is 6379 (IANA #815344).-----默認端口是6379
92 # If port 0 is specified Redis will not listen on a TCP socket.
93 port 6351-----將端口號修改爲一個好記的端口,不修改也可以
/etc/init.d/redis_6379 start----修改完後起服務
[root@host151 utils]# redis-cli -h 192.168.4.151 -p 6351-------服務端重新測試連接服務
192.168.4.151:6351> exit
[root@host50 ~]# redis-cli -h 192.168.4.151 -p 6351------客戶端測試連接服務
192.168.4.151:6351> exit
修改主配置文件後:不能再用/etc/init.d/redis_6379 stop
需要用redis-cli -h 192.168.4.151 -p 6351 shutdown來停服務
或者:
vim /etc/init.d/redis_6379-------再改redis啓動腳本
5 CLIEXEC=/usr/local/bin/redis-cli
6 PIDFILE=/var/run/redis_6379.pid
7 CONF="/etc/redis/6379.conf"
8 REDISPORT="6351"--------修改端口爲6351
43 $CLIEXEC -h 192.168.4.151 -p $REDISPORT shutdown
就可以再用/etc/init.d/redis_6379 stop
2-7、連接服務時使用密碼
• 設置密碼
/etc/init.d/redis_6379 stop-----先停服務
– vim /etc/redis/6379.conf
501 # requirepass foobared---修改前
501:requirepass 123456---修改後
/etc/init.d/redis_6379 start----修改完後起服務
– [root@localhost redis-4.0.8]# redis-cli -h 192.168.4.151 -p 6351------服務端重新測試連接服務
– 127.0.0.1:6379> ping
– (error) NOAUTH Authentication required.
– 127.0.0.1:6379> auth 123456 -----輸入密碼
– OK
– 127.0.0.1:6379> ping
– PONG
– 127.0.0.1:6379>
注意這裏相關參數的定義:
-p 指定端口
-a 指定密碼
-h 指定ip
注意:改變端口號、密碼、ip:腳本停止不了解決辦法
redis-cli -p 6345 shutdown
改變腳本
vim /etc/init.d/redis_6379
43: $CLIEXEC -h 192.168.4.52 -p 6351 -a 123456 shutdown
3、redis常用操作指令
1.– Set keyname keyvalue -----------爲keyname賦值
2.– Set keyname keyvalue EX 秒數--------- 賦值時指定有效存在時間
3.– get keyname ---------列出賦值
4.– Select 數據庫編號0-15------------切換庫(共16個)
5.– Keys * -------------列出當前庫下所有keyname變量
6.– Keys a? ------------列出指定變量
7.– Exists keyname -----測試是否存在,0爲不存在,1爲存在
8.– ttl keyname --------查看生存時間 -1是永不過期,-2是過期
9.– type keyname -------查看keyname類型,注意這裏的數字也是字符類型
10.– move keyname dbname------移動變量從當前庫到目標庫,該變量會從此庫移除
11.– expire keyname 10 ------設置變量有效存在時間,單位爲秒
12.– del keyname ----------刪除變量
13.– flushall----------刪除所有變量,刪除內存中所有數據,即清楚所有庫的數據
14. -flushdb --------只刪除當前庫的數據
15.– save --------保存變量存儲到數據庫目錄中 硬盤裏
16.– shutdown ------關閉服務
3-1、向redis服務存取數據的常用命令
[root@host50 ~]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> set name bob
192.168.4.51:6351> get name
192.168.4.51:6351> keys *
192.168.4.51:6351> set age 18
192.168.4.51:6351> keys *
192.168.4.51:6351> select 3
192.168.4.51:6351> select 0
192.168.4.51:6351> keys *
192.168.4.51:6351> keys a?
192.168.4.51:6351> keys a??
192.168.4.51:6351> EXISTS school
192.168.4.51:6351> EXISTS name
192.168.4.51:6351> ttl age
192.168.4.51:6351> EXPIRE age 10
192.168.4.51:6351> ttl age
192.168.4.51:6351> type name
192.168.4.51:6351> move name 1
4、配置文件解析vim /etc/redis/6379.conf
4-1、數據單位
12 # 1k => 1000 bytes
13 # 1kb => 1024 bytes
14 # 1m => 1000000 bytes
15 # 1mb => 1024*1024 bytes
16 # 1g => 1000000000 bytes
17 # 1gb => 1024*1024*1024 bytes
4-2、常用配置選項
- – port 6379 ---------------指定訪問時訪問的端口
- – bind 127.0.0.1 ----------訪問時訪問的IP地址
- – tcp-backlog 511 ---------tcp連接總數
- – timeout 0 ------連接超時時間,就是連接成功後客戶端閒置x秒後就會自動斷開與redis的連接,因爲永遠不會閒置0秒,所以永不超時
- – tcp-keepalive 300 -------長連接時間
- – daemonize yes -----------以守護進程方式運行
- – databases 16 ------------數據庫個數
- – pidfile /var/run/redis_6379.pid 進程PID
- – logfile /var/log/redis_6379.log 日誌文件
- – maxclients 10000 --------併發連接數量
- – dir /var/lib/redis/6379 -----數據庫目錄
- – requirepass foobared ---------客戶端連接服務器後需要先輸入密碼,再做其他操作
- - masterauth <master-password> 主從認證的密碼
- - slaveof <masterip> <masterport> 設置主服務器IP及端口,主動與主服務器同步數據
4-3、內存管理
• 內存清除策略
- – volatile-lru 最近最少使用 (針對設置了過期時間的key)
- – allkeys-lru 刪除最少使用的keyname
- – volatile-random 在設置了過期的key裏隨機移除
- – allkeys-random 隨機移除keyname
- – volatile-ttl (minor TTL) 移除最近過期的key
- – noeviction 永遠不刪除 寫滿時報錯
• 選項默認設置
- – maxmemory <bytes> //最大內存
- – maxmemory-policy noeviction //定義使用的策略
- – maxmemory-samples 5 //選取模板數據的個數(針對lru 和 ttl 策略)
5、部署LNMP+redis或LAMP
5-1、 部署LAMP
[root@host50 ~]# rpm -q httpd php php-mysql
httpd-2.4.6-67.el7.x86_64----apache服務
php-5.4.16-42.el7.x86_64-----php解釋器
php-mysql-5.4.16-42.el7.x86_64----檢查用來實現php連接mysql的軟件有沒有安裝
[root@host50 ~]# rpm -qa | grep -i mysql
]# systemctl start httpd ; systemctl enable httpd
]# systemctl start mysqld ; systemctl enable mysqld-----起服務
~]# mysql -uroot -p123456----測試mysql
mysql>
5-2、安裝源碼nginx
rpm -q gcc gcc-c++ pcre-devel zlib-devel------檢查依賴包是否已安裝
useradd nginx-----創建nginx用戶
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx ----自定義相關參數
make && make install-----編譯及安裝
- 測試nginx服務是否ok
[root@host51 nginx-1.12.2]# netstat -utnlp | grep :80
[root@host51 nginx-1.12.2]# /usr/local/nginx/sbin/nginx
[root@host51 nginx-1.12.2]# netstat -utnlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3130/nginx: master
[root@host51 nginx-1.12.2]# echo 234 > /usr/local/nginx/html/a.html
[root@host51 nginx-1.12.2]# curl http://localhost/a.html
234
- 安裝fastcgi
]# rpm -ivh php-fpm-5.4.16-42.el7.x86_64.rpm
]# systemctl start php-fpm.service
]# systemctl enable php-fpm.service
]# netstat -utnlp | grep :9000
修改配置文件以實現php連接mysql
vim /usr/local/nginx/conf/nginx.conf
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
70 # include fastcgi_params;
71 include fastcgi.conf;
72 }
:wq
- • 啓動nginx服務
[root@host51 lnmp]# /usr/local/nginx/sbin/nginx -s stop
[root@host51 lnmp]# /usr/local/nginx/sbin/nginx
[root@host51 lnmp]# vim /usr/local/nginx/html/test.php
<?php
echo "hello boy";
?>
:wq
[root@host51 lnmp]# curl http://localhost/test.php
hello boy
6、配置PHP支持redis
php支持redis服務 51主機 LNMP
配置步驟:
6-1、 裝包
]#rpm -q gcc gcc-c++------檢查是否安裝
]#yum -y install autoconf automake---安裝依賴包
]#rpm php-devel-5.4.16-42.el7.x86_64.rpm ---安裝依賴包
]#phpize-------因爲php需要使用phpize安裝php擴展,所以phpize必須ok,而phpize要ok必須安裝上面的軟件包
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
安裝php支持redis的源碼包
]#tar -zxvf php-redis-2.2.4.tar.gz
]#cd phpredis-2.2.4/
]#./configure --with-php-config=/usr/bin/php-config
]#make
]# make install
Installing shared extensions: /usr/lib64/php/modules/
]#ls /usr/lib64/php/modules/
redis.so
6-2、修改PHP程序的配置文件,調用模塊
修改php配置文件
]# vim /etc/php.ini
728 extension_dir = "/usr/lib64/php/modules/"-----擴展模塊所在目錄
730 extension = "redis.so"---擴展模塊名
:wq
[root@host151 phpredis-2.2.4]# systemctl restart php-fpm.service----重起服務以加載配置文件
[root@host151 phpredis-2.2.4]# php -m | grep -i redis-----查看php支持的模塊(m)中有沒有redis
redis
6-3、 編寫php腳本(連接redis服務存儲數據)
vim /usr/local/nginx/html/redis.php
<?php
$redis = new redis();
$redis->connect('192.168.4.51',"6351");
$redis->auth('123456');
$redis->set('age','60');
echo $redis->get('age');
?>
:wq
6-4、 測試配置
在客戶端訪問51 網站服務器的redis.php 網頁文件
連接51主機的redis服務查看存儲數據是否有名叫aga的變量名,且其值爲60。