數據庫基礎之11(部署redis服務、redis常用操作指令、配置文件解析vim /etc/redis/6379.conf、配置PHP支持redis)

目錄

1、數據庫類型

1-1、RDBMS

1-2、NoSQL

2、部署redis服務

2-1、Redis介紹

2-2、安裝軟件包

2-3、初始配置

2-4、啓動停止程序及查狀態

2-5、連接redis服務

2-6、修改服務使用的ip地址和端口:

2-7、連接服務時使用密碼

3、redis常用操作指令

3-1、向redis服務存取數據的常用命令

4、配置文件解析vim /etc/redis/6379.conf

  4-1、數據單位

4-2、常用配置選項

4-3、內存管理

5、部署LNMP+redis或LAMP

5-1、 部署LAMP

 5-2、安裝源碼nginx

6、配置PHP支持redis

6-1、 裝包

6-2、修改PHP程序的配置文件,調用模塊

6-3、 編寫php腳本(連接redis服務存儲數據)

6-4、 測試配置


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特點:

  1. – 支持數據持久化,可以把內存裏數據保存到硬盤中
  2. – 不僅僅支持key/values類型的數據,同時還支持list hash set zset 類型
  3. – 支持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、常用配置選項

  1. – port 6379 ---------------指定訪問時訪問的端口
  2. – bind 127.0.0.1 ----------訪問時訪問的IP地址
  3. – tcp-backlog 511 ---------tcp連接總數
  4. – timeout 0 ------連接超時時間,就是連接成功後客戶端閒置x秒後就會自動斷開與redis的連接,因爲永遠不會閒置0秒,所以永不超時
  5. – tcp-keepalive 300 -------長連接時間
  6. – daemonize yes -----------以守護進程方式運行
  7. – databases 16 ------------數據庫個數
  8. – pidfile /var/run/redis_6379.pid 進程PID
  9. – logfile /var/log/redis_6379.log 日誌文件
  10. – maxclients 10000 --------併發連接數量
  11. – dir /var/lib/redis/6379 -----數據庫目錄
  12. – requirepass foobared ---------客戶端連接服務器後需要先輸入密碼,再做其他操作
  13. - masterauth <master-password> 主從認證的密碼
  14. - 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。

 

發佈了41 篇原創文章 · 獲贊 20 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章