Redis
Redis數據庫的配置與連接
- 解壓redis數據庫的安裝包(建議把解壓后的安裝包放到磁盤的根目錄,方便訪問操作)
- 打開【命令行窗口】:win+R
- 在命令行窗口,進入到redis安裝目錄中
? 格式一:cd /d redis目錄完整路徑 跨磁盤切換目錄
? 例:cd /d d:\redis
? 格式二:
? ①切換磁盤:磁盤符:
? 例:切換D盤 D:或者d:
? ②切換目錄:cd 目錄名字
? 例:cd redis
- 啟動redis數據庫的服務
? 命令:redis-server.exe redis.windows.conf
? mysql端口號:3306,redis端口號:6379
- 連接redis數據庫
? 重新打開一個命令行窗口做連接:進入redis安裝目錄
? 命令:redis-cli.exe
- 測試:輸入ping命令,得到PONG結果,證明redis數據庫的配置與連接是OK的、
redis數據庫配置與安裝
- 啟動redis數據庫的服務:redis-server.exe redis.windows.conf
- 連接redis數據庫:redis-cli.exe
1、Redis數據庫概述
- NOSQL:不僅僅是SQL,泛指非關系型數據庫,是對關系型數據庫的一個有力補充,數據的組織方式,大部分都是以【鍵值對key-value】的形式來存儲和管理的,
? 例:redis:鍵值對:鍵名 值——>name “tom” age 18
? MongoDB:鍵值對:鍵名:值 name:”tom” age:18
? 關系型數據庫:RDBMS
-
redis:遠程字典服務,是==開源免費(開放源代碼,配置文件中的參數可以根據實際情況做出修改),基于內存(數據直接存儲在內存),跨平臺(可以在多個操作系統使用)==的非關系型Key-Value數據庫
-
redis特征:①數據直接加載到內存中存儲和管理數據;②支持到的數據類型,以及每一種類型提供的操作命令是較多的;③數據的處理(讀寫)速度是較快的;④持久化功能:利用生成的持久化文件,可以避免因異常操作引發數據丟失問題,實現數據的還原恢復操作;⑤redis數據庫可以設置鍵值對數據的有效活動時間,一旦過了該時間,就會被系統直接刪除;⑥支持事務操作:事務:指的是在當前數據庫中一次性并行處理的操作,要么全部執行,要么全部取消——>原子性
2、Redis和MySQL對比
- 類型:redis:非關系型數據庫 mysql:關系型數據庫
- 數據存儲和管理方式(組織方式):redis:鍵值對 mysql:表
- 數據的存放位置:redis:基于內存 mysql:放在磁盤
- MySQL偏向于【存數據】,redis偏向于【讀取數據】
3、Redis支持的數據類型以及操作命令
- redis自帶16個數據庫,庫編號:0-15,默認是在0號庫(第一個庫)
切換數據庫:select 庫編號
備注:redis命令學習建議:==redis命令作用;redis命令的語法格式;==redis命令和參數結合作用
- redis數據庫的增刪改查操作
? ①set 鍵名 值 創建/插入鍵值對數據
? ②set 鍵名 新值 修改鍵中的值
? ③get 鍵名 獲取鍵中的值
? ④del 鍵名 刪除鍵中的值
-
redis數據庫關于鍵Keys的操作命令
-
exists 鍵名 判斷該鍵是否存在
-
type 鍵名 查看該鍵的數據類型 string:字符串
備注:除了列表,set集合,hash集合,有序集合,其它的數據默認歸納為字符串類型
-
keys 字符模板 查找和該模板匹配的鍵名 ***** 任意,所有
-
keys * 查找所有的鍵名
-
randomkey 隨機返回一個存在的鍵
-
rename 舊鍵名 新鍵名 對鍵進行重命名操作
-
dbsize 統計鍵的總個數
-
expire 鍵名 時間s 設置鍵的有效活動時間
-
ttl 鍵名 獲取鍵的有效活動時間
-
move 鍵名 庫編號 將當前庫中的鍵移動到指定的庫
-
flushdb 刪除當前庫中的所有鍵
-
flushall 刪除所有庫中的所有鍵
-
set 鍵名 值 ex 時間s 在創建鍵值對數據的同時,設置有效活動時間
-
exit/quit:退出客戶端(斷開數據庫連接)
-
info 顯示redis數據庫的屬性信息
-
-
Redis數據類型-字符串類型:string
-
string是redis基本的、默認的數據類型
-
提供的操作命令:
- set/get:創建一組鍵值對數據/獲取一個鍵的值
- mset 鍵名1 值1 鍵名2 值2 鍵名3 值3…. 向庫中插入多組鍵值對數據
- mget 鍵名1 鍵名2 鍵名3… 獲取多個鍵的值
- getset 鍵名 新值 先獲取鍵中原始的值,再把新值賦值給該鍵
- setnx 鍵名 值 添加鍵值對數據,如果該鍵存在,則什么都不做
- msetnx 鍵名1 值1 鍵名2 值2… 添加多組鍵值對數據(有一個存在也會影響其它的插入),
- setex 鍵名 時間s 新值 修改鍵中的值,并設置有效的活動時間
- incr 鍵名 讓鍵中的值自動加1
- incrby 鍵名 自定義數字 指定數字的加法操作
- decr 鍵名 讓鍵中的值自動減1
- decrby 鍵名 自定義數字 指定數字的減法操作
- append 鍵名 新值 將新值拼接在鍵中原始值的后方(拼湊在一起)
- substr 鍵名 開始位置的下標 結束位置下標 對鍵中字符串數據進行截取操作
- setrange 鍵名 位置下標 新值 得到一個新的字符串(從指定位置開始,拿上新值,替換原始字符串數據,替換范圍取決于新字符串長度)
- getrange 鍵名 開始位置下標 結束位置下標 對鍵中的字符串進行截取操作 <——>參考substr
- strlen 鍵名 統計該鍵中字符串長度
-
- redis特征
- redis操作命令:作用,格式
-
Redis數據類型-List(列表,鏈表)
-
概述:列表類型的鍵,可以存儲多個值——>用來插入多個字符串類型的數據值,列表鍵中是可以有重復的值
-
List列表提供的操作命令:
-
lpush 鍵名 值1 值2 值3… 創建或從列表的頭部插入數據(先寫的數據在下邊)
-
rpush 鍵名 值1 值2 值3… 創建或從列表的尾部插入數據(先寫的數據在上邊)
-
lrange 鍵名 開始位置下標 結束位置下標 查看列表鍵中范圍之內的數據值
-
llen 鍵名 統計列表鍵中值的總個數
-
lindex 鍵名 位置下標 根據下標獲取對應位置上的值
-
lset 鍵名 位置下標 新值 根據下標修改指定位置上的值
-
lrem 鍵名 數量 值 從列表鍵中刪除指定數量的相同值
-
lpop 鍵名 返回并刪除鍵中頭部元素值
-
rpop 鍵名 返回并刪除鍵中尾部元素值
-
linsert 鍵名 before 指定元素值 新值 在指定元素值的前面插入新的值
-
linsert 鍵名 after 指定元素值 新值 在指定元素值的后面插入新的值
-
ltrim 鍵名 開始位置的下標 結束位置的下標
備注:鍵中只保留截取后的數據
-
-
-
Redis數據類型-Set集合:存放多個字符串類型的數據值,唯一,無序
? set集合類型提供的操作命令:
? ①sadd 鍵名 值1 值2 值3… #創建/向set集合鍵中插入數據
? ②smembers 鍵名 #返回鍵中所有的值
? ③srem 鍵名 值 #從該鍵中刪除指定的數據值
? ④spop 鍵名 #返回并刪除鍵中的一個值
? ⑤smove 鍵名1 鍵名2 值 #將鍵名1的值移動到鍵名2
? ⑥scard 鍵名 #統計鍵中值的總個數
? ⑦sismember 鍵名 值 #檢測該值是否存在于集合中
? ⑧sinter 鍵名1 鍵名2 鍵名3… 求#交集,把這些集合鍵中共有的數據顯示出來
? ⑨sinterstore 新的鍵名 鍵名1 鍵名2 鍵名3… #求交集保存在新的集合鍵中
? ⑩sunion 鍵名1 鍵名2 鍵名3… #求并集,這些集合中的數據融合在一起顯示:相同的保留一個,不同的直接融合
? ?sunionstore 新的鍵名 鍵名1 鍵名2 鍵名3… #求并集,保存在新的鍵中
? ?sdiff 鍵名1 鍵名2… #求差集,鍵名1中值減去鍵名2中共有的,把剩下獨有的數據顯示
? ?sdiffstore 新的鍵名 鍵名1 鍵名2… #求差集,并保存在新的鍵中
? ?srandmember 鍵名 #隨機返回鍵中的一個值
- Redis數據類型-Hsah集合:存放【鍵值對】數據集合,每一個hash鍵中,存儲的值都是【鍵值對】,hash:哈希
- hash類型提供的操作命令:
- hset 鍵名 字段名(key) 字段值(value) #生成hash類型集合的鍵,并存入值
- hmset 鍵名 字段名1 字段值1 字段名2 字段值2 字段名3 字段值3… #生成hash類型的鍵,并存入多組值
- hget 鍵名 字段名 #獲取鍵中某個字段的值
- hmget 鍵名 字段名1 字段名2 字段名3… #獲取多個字段值
- hgetall 鍵名 #獲取鍵中所有的字段以及字段值
- hincrby 鍵名 字段名 增加值 #將鍵中指定字段中存儲的值進行加法操作
- hexists 鍵名 字段名 #檢測該字段是否存在于鍵中
- hdel 鍵名 字段名 #刪除該鍵中的字段
- hlen 鍵名 #統計該鍵中字段的總個數
- hkeys 鍵名 #獲取鍵中所有的字段名
- hvals 鍵名 #獲取鍵中所有的字段值
- redis數據類型-有序集合:zset,用來存儲多個字符串類型的數據的集合,通過每一個值關聯一個分數,然后利用分數達到排序的效果(升序:從小到大)唯一
- 有序集合提供的操作命令:
- zadd 鍵名 分數1 值1 分數2 值2 分數3 值3… #生成有序集合類型的鍵并存入值
- zrange 鍵名 開始位置下標 結束位置下標 #查看鍵中的所有值
- zrevrange 鍵名 開始位置下標 結束位置下標 #降序查看鍵中的數據
- zcard 鍵名 #統計該鍵中值的總個數
- zcount 鍵名 最低分 最高分 #根據分數區間統計值的數量
- zincrby 鍵名 增加的分數值 值 #給該值進行分數的增加
- zrank 鍵名 值 #返回該值對應的下標(下標算法:把最小的值看成是第一個元素)
- zrevrank 鍵名 值 #返回該值對應的下標(下標算法:把最大的值看成是第一個元素)
- zscore 鍵名 值 查看該值對應的分數
- zrem 鍵名 值1 值2… #刪除鍵中的數據
- zscan 鍵名 游標值(0) 查看鍵中所有的值以及關聯的分數
- zremrangebyscore 鍵名 最低分 最高分 #刪除分數區間內的數據
4、事務的操作
- 概述::事務指的是一次可以執行多個操作命令——>把對應的操作命令都放在事務中,一旦執行事務,就會把事務中所包含的所有操作命令全部執行。
備注:在沒有事務介入前,每一個命令都是一個一個執行的
- 事務的創建流程:
事務從開始到執行會經歷三個階段:
開始事務—–>multi
命令入隊——>各種操作命令
執行事務——>exec
備注:redis數據庫“事務”,并沒有真正做到原子性——>“偽事務”(低版本的)
5、Redis數據庫的備份與恢復
- 數據庫備份操作:
? save 備份完成后,生成一個dump.rdb文件,放在redis的安裝目錄
? 備注:有時候備份完成后,找不到或不清楚該文件存在的路徑(redis的安裝目錄):config get dir
- 數據庫還原/恢復操作:
只需要把dump.rdb文件,放入到redis目錄下,重啟redis服務即可