Redis數據庫簡介
Redis數據庫是典型的非關係數據庫,
redis有以下幾個優點
具有極高的數據讀寫速度
支持豐富的數據類型
支持數據備份
支持數據的持久化
原子性
安裝並使用Redis數據庫
實驗環境及材料
一臺centos7即可,Rdis軟件包,
軟件包鏈接如下
鏈接:https://pan.baidu.com/s/1kV6shNMC9dPHFYwwjQf8hQ&shfl=sharepset
提取碼:x3jo
1.Redis安裝部署
1)安裝
把包拖入Xshell
[root@CentOS7-02 ~]# tar zxf redis-3.2.9.tar.gz
[root@CentOS7-02 ~]# cd redis-3.2.9
[root@CentOS7-02 redis-3.2.9]# make && make install (這個包不用進行./configure)
(我只是展示命令,如果你不改路徑不要執行下面這條命令)
如下命令,可用改安裝路徑,
[root@CentOS7-02 redis-3.2.9]# make PREFIX=/usr/local/ install
默認沒有啓動腳本文件,軟件包中默認有,通過這個腳本可用設置相關配置文件
[root@CentOS7-02 ~]# cd /root/redis-3.2.9/utils/
[root@CentOS7-02 utils]# ./install_server.sh
[root@CentOS7-02 utils]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 4263/redis-server 1
2)啓動關閉服務
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 stop (關閉)
Stopping ...
Redis stopped
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 start (開啓)
Starting Redis server...
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 status
Redis is running (4280)
如果是關閉狀態,它也會顯示running,但不顯示後面的數字,(進程號)
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 restart (重啓)
2.Redis命令工具
1)Redis命令行工具
[root@CentOS7-02 ~]# redis-cli (登陸本機的Redis數據庫)
127.0.0.1:6379>
ping (測試Redis服務是否啓動,如下表示啓動)
PONG
遠程登陸其他的Redis數據庫,這個就使用自己的IP演示
遠程的話需要修改配置文件,添加自己的IP地址,纔可以讓自己或別人連接
127.0.0.1:6379>
exit
[root@CentOS7-02 ~]# vim /etc/redis/6379.conf
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 restart
[root@CentOS7-02 ~]# redis-cli -h 192.168.100.102 -p 6379
192.168.100.102:6379>
192.168.100.102:6379>
exit (退出數據庫)
當然上面如果你有第二臺Redis服務器,也可以換成第二臺的IP去連接
使用help命令幫助
[root@CentOS7-02 ~]# redis-cli
127.0.0.1:6379>
help set (查看set命令的幫助)
SET key value [EX seconds] [PX milliseconds] [NX|XX]
summary: Set the string value of a key
since: 1.0.0
group: string
2)redis-benchmark測試工具
這個工具官方的工具,可以有效的測試Redis數據庫的性能,
1. 向I地址爲192.168.100.102的IP(就是自己IP),端口6379,的Redis服務器,發送100個併發連接,與100000個請求測試
[root@CentOS7-02 ~]# redis-benchmark -h 192.168.100.102 -p 6379 -c 100 -n 100000
2.測試存取大小爲4MB的數據包性能
[root@CentOS7-02 ~]# redis-benchmark -h 192.168.100.102 -p 6379 -q -d 4MB
3.Redis數據庫常用命令
Redis數據庫採用 key-value (鍵值對)的數據存儲形式
set:存放數據,格式 set key valuse
get: 獲取數據,格式 get key
127.0.0.1:6379>
set aaa bbb
OK
127.0.0.1:6379>
get aaa
"bbb"
key相關命令
1)keys
使用keys命令可以取符合規則的鍵值列表,結合*
?
127.0.0.1:6379> set a1 1
OK
127.0.0.1:6379> set a2 2
OK
127.0.0.1:6379> set a3 3
OK
127.0.0.1:6379> set v1 22
OK
127.0.0.1:6379> set v2 4
OK
127.0.0.1:6379>
keys * (顯示當前庫所有鍵)
1) "v2"
2) "key:__rand_int__"
3) "a2"
4) "mylist"
5) "a3"
6) "k1"
7) "counter:__rand_int__"
8) "aaa"
9) "k2"
10) "a1"
11) "v1"
127.0.0.1:6379>
keys v* (顯示所有以v打開頭的鍵)
1) "v2"
2) "v1"
127.0.0.1:6379>
set v22 8
OK
127.0.0.1:6379>
keys v? (顯示鍵以v開頭而且是後面只有一個字符的)
1) "v2"
2) "v1"
127.0.0.1:6379
> keys v?? (顯示鍵以v開頭而且後面只有兩個字符的)
1) "v22"
2)exists
使用這條命令可以判斷鍵值是否存在
127.0.0.1:6379>
exists v1
(integer) 1
( 1 表示這個鍵存在)
127.0.0.1:6379>
exists u
(integer) 0
(0 表示這個鍵不存在)
3)del
刪除鍵值
127.0.0.1:6379>
get a1
"1"
127.0.0.1:6379>
del a1
(integer) 1
(刪除成功)
127.0.0.1:6379>
get a1
(nil)
(提示已經沒有了)
4)type
使用type命令可以獲取key對應的value值類型
127.0.0.1:6379>
type a2
string
5)rename
rename命令是對已有的key進行重命名,無論目標key是否存在都進行重命名,且源key的值會覆蓋目標key的值
127.0.0.1:6379
> set s1 1
OK
127.0.0.1:6379
> set s2 2
OK
127.0.0.1:6379
> set s3 3
OK
127.0.0.1:6379
> keys s*
1) "s2"
2) "s1"
3) "s3"
127.0.0.1:6379
> rename s2 s3 ( 把s2重命名爲s3, s3的原來的值就會變成s2 的值覆蓋)
OK
127.0.0.1:6379
> keys s*
1) "s1"
2) "s3"
127.0.0.1:6379
> get s3 (是s2的鍵值)
"2"
6)renamenx
renamenx 命令的作用是對已有的key進行重命名,並檢測新名是否存在,如果目標key存在,就不進行重命名
127.0.0.1:6379
> get s1
"1"
127.0.0.1:6379>
get s3
"2"
127.0.0.1:6379>
renamenx s1 s3
(integer) 0
(這顯示執行失敗)
127.0.0.1:6379>
get s1
"1"
127.0.0.1:6379>
get s3
"2"
127.0.0.1:6379>
renamenx s1 s5 (這樣可以)
(integer) 1
127.0.0.1:6379>
get s5
"1"
(這是s1的鍵值)
127.0.0.1:6379>
get s1
(nil)
(已經不存在了)
多數據庫常用命令
1)多數據庫間切換
Redis支持多數據庫,Redis在沒有任何改動情況下默認包含16個數據庫,使用數字0~15來表示
[root@CentOS7-02 ~]# redis-cli
127.0.0.1:6379>
(默認進去是0數據庫,不會顯示)
127.0.0.1:6379>
select 10 (切換到10數據庫)
OK
127.0.0.1:6379[10]>
(顯示前面有個10,表示當前是10數據庫)
127.0.0.1:6379[10]>
select 16
(error) ERR invalid DB index
(沒有16及以上的數據庫)
2)多數據庫間移動數據
Redis的多數據庫中的數據都是獨立的,例如在0上的aaa鍵值,其他數據庫是沒有的
127.0.0.1:6379>
get aaa
"bbb"
127.0.0.1:6379>
select 1
OK
127.0.0.1:6379[1]>
get aaa ( 顯示沒有)
(nil)
Redis數據庫提供了一個move命令,可以在數據庫中移動數據,而不是複製,原有位置的鍵會沒有
127.0.0.1:6379[1]>
select 0
OK
127.0.0.1:6379>
get aaa
"bbb"
127.0.0.1:6379> move aaa 1 (把aaa鍵值移動到 1 數據庫)
(integer) 1
127.0.0.1:6379>
get aaa (原來位置已經沒了)
(nil)
127.0.0.1:6379>
select 1 (切換到 1 裏)
OK
127.0.0.1:6379[1]>
get aaa (已經過來了)
"bbb"
3)清空數據內容
127.0.0.1:6379[1]>
flushdb ( 清空當前所在,1數據庫內容)
127.0.0.1:6379[1]>
flushall (清空所有數據庫內容,16個)
OK