楊浦做網(wǎng)站公司買賣交易平臺(tái)
?
概念
Redis:非關(guān)系型數(shù)據(jù)庫(non-relational),Mysql是關(guān)系型數(shù)據(jù)庫(RDBMS)
?
Redis是當(dāng)今非常流行的基于KV結(jié)構(gòu)的作為Cache使用的NoSQL數(shù)據(jù)庫
?
為什么使用NoSQL
關(guān)系型 數(shù)據(jù)庫無法應(yīng)對(duì)每秒上萬次 的讀寫請(qǐng)求
表中的存儲(chǔ)記錄 數(shù)量有限
無法簡(jiǎn)單的通過增加硬件、服務(wù)節(jié)點(diǎn)來提高系統(tǒng)性能
關(guān)系型數(shù)據(jù)庫大多是收費(fèi)的,對(duì)硬件要求較高,軟硬 件成本較高
NoSQL優(yōu)勢(shì)
大數(shù)據(jù)量,高性能
靈活的數(shù)據(jù)模型,無需事先為數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式
高可用,在不影響性能的情況下,可以方便的實(shí)現(xiàn)高可用的框架,能很好的解決關(guān)系型數(shù)據(jù)庫擴(kuò)展性差的問題
低成本
NoSQL劣勢(shì)
無關(guān)系,數(shù)據(jù)之間是無聯(lián)系的
不支持標(biāo)準(zhǔn)的SQL,沒有公認(rèn)的NoSQL標(biāo)準(zhǔn)
沒有關(guān)系型數(shù)據(jù)庫的約束,大多數(shù)也沒有索引的概念
沒有事務(wù),不能依靠事務(wù)實(shí)現(xiàn)ACID
沒有豐富的數(shù)據(jù)類型(數(shù)值,日期,字符,二進(jìn)制,大文本等)
Redis安裝和使用
官網(wǎng):Redis官網(wǎng)
?
中文版:Redis中文版網(wǎng)址
?
下載
window版本
網(wǎng)址:window版本網(wǎng)址
?
使用步驟
下載Redis-x64-3.2.100.zip
?
解壓,雙擊:redis-server.exe,如果啟動(dòng)失敗需要手動(dòng)配置:redis.windows.conf
?
在當(dāng)前目錄下,選擇目錄顯示框,輸入:cmd,進(jìn)入命令行
?
輸入redis-server.exe redis.windows.conf 回車
?
出現(xiàn)上圖的圖形,則證明該服務(wù)已啟動(dòng)
?
雙擊:redis-cli.exe,打開Redis自帶客戶端,通過該客戶端可以執(zhí)行和Redis的數(shù)據(jù)交互
?
輸入:set,自動(dòng)彈出語法格式
?
將光標(biāo)通過空格鍵移到key上,輸入key的值,光標(biāo)通過空格鍵移到value上,輸入value的值,回車。
?
出現(xiàn)該結(jié)果代表值保存成功
?
通過:get 方法取值
?
Linux版本
網(wǎng)址:Redis官網(wǎng)
?
安裝步驟
通過Xftp工具,將下載在window上的壓縮包上傳到Linux上目錄:/home/soft
?
解壓到Linux上目錄:usr/local目錄:
?
解壓命令:tar -zxvf 壓縮包名 -C usr/local/
?
編譯Redis文件,Redis是使用C語言編寫的。會(huì)使用gcc編譯器
?
在解壓后的Redis安裝目錄執(zhí)行make命令,
?
注意事項(xiàng):
?
make命令執(zhí)行過程中可能報(bào)錯(cuò),根據(jù)控制臺(tái)輸出的錯(cuò)誤信息解決
?
錯(cuò)誤一:gcc命令找不到,是由于沒有安裝gcc導(dǎo)致
?
解決方式:安裝gcc編譯器后執(zhí)行make命令
?
安裝gcc編譯器:在src目錄下使用yum命令:yum -y install gcc
?
錯(cuò)誤二:error:jemalloc/jemalloc.h:No such file or directory
?
解決方式執(zhí)行:make MALLOC=libc
?
make命令之后,執(zhí)行:make install,該命令類似于windows系統(tǒng)中配置環(huán)境變量,這樣我們就可以在任何地方執(zhí)行Redis的命令
Linux中的使用
開啟Redis
Linux中的redis-server是服務(wù)窗口,redis-cli是客戶端窗口
?
在src目錄下執(zhí)行:
?
打開服務(wù)器
?
前臺(tái)啟動(dòng):./redis-server
?
后臺(tái)啟動(dòng):./redis-server &(常用后臺(tái)啟動(dòng)方式,如果修改了配置文件,則每次啟動(dòng)都需要指向配置文件)
?
打開客戶端,執(zhí)行:./redis-cli 開啟命令行
?
關(guān)閉Redis
在客戶端中執(zhí)行:shutdown
在src目錄下執(zhí)行:./redis-cli shutdown(如果有密碼:./redis-cli -a 密碼 shutdown)
Redis客戶端
redis命令行客戶端
直接連接redis(默認(rèn)ip:127.0.0.1,端口:6379):./redis-cli
指定IP和端口號(hào)連接redis:./redis-cli -h 127.0.0.1 -p 6379
-h redis主機(jī)IP(可以指定任意redis服務(wù)器)
-p 端口號(hào)(不同的端口號(hào)表示不同的redis應(yīng)用)
遠(yuǎn)程客戶端連接Linux上redis
網(wǎng)址:遠(yuǎn)程客戶端網(wǎng)址
?
國(guó)產(chǎn):客戶端
?
Redis服務(wù)器有安全保護(hù)措施,默認(rèn)只有本機(jī)可以訪問,配置信息在Redis安裝目錄下的redis.conf文件。修改此文件的兩個(gè)設(shè)置。
?
遠(yuǎn)程連接redis需要修改redis主目錄下的redis.conf配置文件:
?
bind ip 綁定ip,此行注釋
protected-mode yes 保護(hù)模式改為no
使用vi/vim命令修改redis.conf文件,修改文件前備份此文件,執(zhí)行cp命令
?
步驟
在/usr/local/redis/目錄下執(zhí)行: cp redis.conf bak_redis.conf
?
使用vim/vi命令,執(zhí)行:vim redis.conf 再執(zhí)行:GG 將光標(biāo)移至最后一行,再執(zhí)行:/bind 按回車查找,執(zhí)行:n 往下查找,找到 bind 127.0.0.1后將其注釋掉,
?
找到protected -mode yes,將yes改成no
?
執(zhí)行:esc按鍵,輸入“:qw”,完成保存退出
?
修改結(jié)束后,每次啟動(dòng)redis時(shí),需要指定redis.conf
?
進(jìn)入src目錄下執(zhí)行:./redis-server ../redis.conf &
?
查看 防火墻的狀態(tài),執(zhí)行:systemctl status firewalld
?
關(guān)閉防火墻命令:service firewalld stop
?
編程 客戶端連接Linux的redis
Redis基本操作命令
1、溝通命令
命令行輸入:ping,返回PONG,表示服務(wù)端運(yùn)行正常
?
2、查看當(dāng)前數(shù)據(jù)庫中key的數(shù)目:dbsize
作用:返回當(dāng)前數(shù)據(jù)庫的 key 的數(shù)量,默認(rèn)訪問第0個(gè)庫
?
3、Redis默認(rèn)使用16個(gè) 庫
可以在conf配置文件中修改:databases的值
?
4、切換庫命令:select
執(zhí)行:select index
?
5、刪除當(dāng)前庫的數(shù)據(jù):flushdb
刪除當(dāng)前庫中的所有數(shù)據(jù)
?
6、redis自帶的客戶端退出當(dāng)前redis連接:exit或quit
客戶端退出連接,服務(wù)端繼續(xù)運(yùn)行
?
Redis的key的操作命令
keys:查詢自己需要的key
語法:keys pattern
?
作用:查找所有符合模式pattern的key,pattern可以使用通配符
?
通配符:
?
*:表示0至多個(gè)字符,例如:keys * 查詢所有的key
?:表示單個(gè)字符,例如:wo?d,配置word,wold
注意:Redis是單線程接收命令
?
exists:查詢key是否存在
語法:exists key [key...]
?
作用:判斷key 是否存在
?
expire:設(shè)置key的存活時(shí)間
語法:expire key seconds
?
作用:設(shè)置key的生存時(shí)間,超過時(shí)間,key自動(dòng)刪除。單位是秒
?
返回值:設(shè)置成功返回?cái)?shù)字1,其他情況是0
?
ttl:查詢key的剩余存活時(shí)間
語法:ttl key
?
作用:以秒為單位,返回 key的 剩余生存時(shí)間(ttl:time to live)
?
返回值:
?
-1:沒有設(shè)置key的生存時(shí)間,key永不過期
-2:key不存在
數(shù)字:key的生存時(shí)間,秒為單位
type
語法:type key
?
作用:查看key所存儲(chǔ)值的數(shù)據(jù)類型
?
返回值:字符串表示的數(shù)據(jù)類型
?
none(key 不存在)
string(字符串)
list(列表)
set(集合)
zset(有序集)
hash(哈希表)
del
語法:del key[key...]
?
作用:刪除存在的key,不存在的key忽略
?
返回值:數(shù)字,刪除的key的數(shù)量
?
五中數(shù)據(jù)類型
字符串string
字符串類型是Redis中最基本的數(shù)據(jù)類型,他能存儲(chǔ)任何形式的字符串,包括二進(jìn)制,序列化后的數(shù)據(jù),JSON化的對(duì)象甚至是一張圖片,最大512M
?
基本命令
set key