1、 redis是什麼呢?
redis是非關係型數據庫(nosql),基於內存讀寫的數據庫,採用key-value的方式存儲數據
nosql: not noly sql ,沒有表的SQL
在目前的企業開發中會用關係型數據庫(Oracale+MySQL)+非關係型數據庫(Redis 、MongoDB、Memcache)共同開發項目
爲什麼使用NoSQL
現在存在數據格式非常多樣,不適合應用表格進行存儲。
表格數據稱之爲 結構化數據
非表格數據稱之爲 半結構化 (kv json) 非結構化數據 音頻 視頻
Redis是基於內存讀寫的數據庫,
硬盤讀取速度 大約幾百M
內存讀取速度 大約 上千M
所以Redis相對來說是要比關係型數據庫要快很多
Redis的應用場景:查詢讀取操作非常頻繁的業務
例如:緩存
2、Redis的下載安裝
Redis可從
https://redis.io/download
官網進行下載,有windows版和linux版,
都是下載直接解壓就可使用
解壓後的目錄如下:
不過需要注意的是:
在windows系統上,我們要修改redis.windows.conf這個文件,將appendonly no改爲appendonly yes
因爲redis是忘往內存上面存儲數據的,改完這個可以使數據直接同步到硬盤上。
而啓動的時候也不要雙擊redis-server.exe進行啓動,因爲這樣啓動是不能加載到redis.windows.conf這個配置文件的,
所以啓動的時候我們要在redis解壓的目錄下進入cmd,
輸入:redis-server redis.windows.conf 啓動redis服務
如圖所示:
這樣就啓動了Redis服務,再雙擊redis-cli.exe就啓動了Redis的客戶端
Linux系統下啓動Redis服務要進到解壓目錄的src下,
輸入./redis-server …/redis.conf
進行啓動,如圖所示:
3、Redis的數據結構、常用命令
redis數據庫存儲數據使用的key-value
key是string類型 value的數據結構支持5個string、set、sorted_set、list、hash
value最大佔用空間 1GB
redis支持的數據結構比較豐富、對不同的數據結構,還擁有不同的操作命令
set、get、del
keys * 打印所有的key
基礎命令 (key value)
keys *
命令的作用:顯示redis中 所有的key
keys name* name後面可以有0—多個任意字符
keys name? name後面必須只存在一個字符
exists key
判斷 key是否存在 若返回 1 則存在 0 不存在
del key
作用:刪除 某一個key
help 命令
幫助命令
flushall 清空所有數據庫中的內容
退出 exit|quit 退出redis的服務器
Redis中值是字符串類型 (String 數字)
set
用於設置 一個字符串類型的 key value
get
根據key獲取值
mset
一次性設置多個 key value
mget
strlen
append
getrange 截取子串
getrange name 0 3
setex 設置一個key的存活有效期 (秒) psetex 作用與 setex 一致 但是毫秒
setnx
如果當前沒有這個key的話 那麼 setnx等價於 set命令
如果當前存在這個key的話 那麼 setnx不起作用
decr 針對數字類型 做 -1操作 另外 desr key 數字 根據數字做減法操作
incr incrby incrbyfloat
應用場景:緩存查詢結果(json或者序列化) 用戶訪問記錄 例如:通過記錄ip-訪問次數來顯示ip的訪問
統計粉絲數、點擊次數、點贊
Redis中值是set類型
c) List類型的數據操作的命令
i. lpush 棧式結構
lpush name suns[2]
lpush name xiaohei[1]
lpush name xiaowb[0]
ii. lpushx 如果操作的key不存在 則不起作用
如果操作的key存在 則等同於lpush
iii. rpush 操作的內容 等效 java List
第一個操作的元素 就放置在第一個位置
依次類推
應用場景:關注列表、消息隊列
hash類型的數據操作的命令
zset (sorted_set)類型的數據操作的命令
7. Redis命令的補充部分
a) 只有set命令 可以操作 任意類型的數據
b) 注意Redis中會有數據庫概念 默認存在16數據庫 0 ---- 15
默認所使用的數據庫 0 如果要選擇使用別的數據庫 select 編號
注意:不同數據庫所創建的key 相互隔離 互補干擾的。通過flushall 清空的是所有數據庫中的key. 清空當前的數據庫 flushdb這個命令
如何該表Redis中對於數據庫的支持呢?編輯 redis.conf
** expire相關命令 (促銷 秒殺 手機驗證碼倒計時 排行榜 Cache)**
i. 在Redis創建key value 默認都是持久化的 永久保存。
ii. 可以通過expire 命令 指定 key 存活時間
expire key seconds
查看某一個key的存活時常
persist 作用 可以把 一個應用了expire命令key 再次轉換持久化的key
expireat key unix 時間戳 毫秒數iii.