日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis基础知识点总结

發布時間:2025/3/20 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis基础知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis默認端口6379

一、安裝

1.去redis.cn看看最新的穩定版下載地址,http://download.redis.io/releases/redis-6.0.6.tar.gz

2.下載 wget http://download.redis.io/releases/redis-6.0.6.tar.gz

3.解壓 tar -zxvf redis-6.0.6.tar.gz

4.移動 放到/usr/local/redis目錄下 sudo mv redis-6.0.6 /usr/local/redis/ 由于redis目錄不存在,所以相當于重命名

5.進入redis目錄 cd /usr/local/redis-6.0.6

6.生成 sudo make 由于redis是C語言編寫的,這個步驟相當于編譯

? 如果出錯,大概率是沒安裝gcc和make,安裝后先make distclean 除編譯內容重新編譯*

7.測試 sudo make test

8.安裝 sudo make install 將redis的命令安裝到/usr/local/bin/目錄

9.進入/usr/local/bin中查看 cd /usr/local/bin ls -all

10.將配置文件復制到/etc/目錄下 配置文件為/usr/local/redis/redis.conf

? sudo cp /usr/local/redis/redis.conf /etc/redis/

二、基本使用

啟動服務端

redis-server 啟動服務端

ps aux|grep redis 查看是否啟動

redis-server --help 查看啟動的幫助

sudo redis-server /etc/redis/redis.conf 指定加載的配置文件

啟動客戶端

redis-cli 啟動客戶端

redis-cli --help 查看啟動幫助,可添加參數(主機、端口等等)

redis-cli -h ip地址 -p 端口號

ping

啟動客戶端后輸入ping 如果結果為PONG則表示客戶端成功連接redis服務端

select

切換數據庫

select 數字 數字范圍是0-databases最大值減1

默認是在select 0

help

help 命令名 查看此命令的使用幫助

核心配置選項

配置信息在/etc/redis/redis.conf

bind 127.0.0.1 如果需要遠程訪問,可將此行注釋或者綁定一個真實ip

port 6379 端口號,默認6379

daemonize yes 設置以守護進程運行,no為非守護進程

? 如果以守護進程運行,則不會在命令行阻塞,類似于服務,保證了redis服務在后臺的穩定運行

? 如果以非守護進程運行,則當前終端被阻塞

databases 16 redis默認有16個數據庫

logfile 日志路徑

dbfilename dump.rdb 數據文件,默認存放在家目錄下

dir /var/lib/redis 數據文件存儲路徑

slaveof 主從復制,類似于雙機備份

三、基本數據結構

redis是key:value的數據結構,每條數據都是一個鍵值對

鍵的類型的字符型,且不能重復

值的類型可以有一定的數據結構,可以為字符串string、列表list、哈希hash、集合set、有序集合zset

四、增刪改查

string類型

在redis中字符串類型的value最多可以容納的數據長度是512M

set 設置

set name LiKang

set age 22

get 獲取

get name

get age

del 刪除

del name

del age

插入的時候設置key的過期時間

setex key 秒數 value

ttl key 查看此key的有效期,-1為永久存在

mset 設置多個key-value

mset name Liang age 22 注意:如果后面還設置了name之前name的值會被覆蓋

mget key1 key2 獲取多個值

append 追加

append key value

鍵命令

del key1 key2 刪除此key的鍵值對

keys * 查看都有哪些key

keys a* 查看a開頭的key

exists key 查看key是否存在,1則存在,0則不存在

type key 查看此key的value的類型

expire key 秒數 給key設置過期時間

hash類型

key的值為 屬性:值,這樣的鍵值對,屬性值為string類型

hset key field value 設置

? 例如hset person name LiKang

hget key field 獲取value值

? 例如hget person name

hmset key field1 value1 field2 value2 設置多個值

hmget key field1 field2 獲取多個值

hgetall key 獲取此key下的所有鍵值對

hkeys key 獲取此key下的所有屬性

hvals key 獲取此key下的所有屬性值

hdel key field1 field2 刪除某個屬性

del key 刪除此key的鍵值對

更新的話再hset key field value插入就行,相同字段會自動覆蓋原來數據實現更新

list類型

列表元素類型為string,且數據按照插入順序排序,元素可以重復

lpush 從左邊插入

? lpush key value1 value2 返回值為key中value的個數

? lrange key num1 num2 從左到右獲取從num1到num2之間的元素值(包括num2),0代表第一個元素,-1代表最后一個元素,l代表list,不是left

rpush 從右邊插入

? rpush key value1 value2 返回值為key中value的個數

? 無rrange命令

lrem key count value 移除數據,l代表list,不是left

? count:0 代表刪除key中的所有值為value的元素

? count>0 刪除左邊的值為value的元素,刪除的個數是count

? count<0 刪除右邊的值為value的元素,刪除的個數是count

lset key 下標 value 更新數據

linsert key before(after) value1 value2 在value1的前面(后面)插入value2

set類型

無序集合,元素為string類型,元素具有唯一性,不重復,對于集合沒有修改操作

sadd key member1 member2 增加數據

smembers key 獲取數據

srem key member 移除數據

zset類型

有序集合,元素類型為string,元素具有唯一性,不重復,每個元素都會關聯一個double類型的score,表示權重,通過權重將元素從小到大排序,且沒有對于集合修改操作

zadd key score1 member1 score2 member2 增加數據

? 如果score的值已經存在,則會將新元素插入到與它score值相同的元素的后面或者前面

? 如果member的值已經存在,則會修改其socre的值為新值

zrange key num1 num2 獲取num1到num2之間的數據(包括num2)

zrangeby score key min max 獲取score值在min到max之間的成員(包括min和max)

zscore key member 返回member的score值

zrem key member1 member2 刪除指定元素

zremrangebyscore key min max 刪除score值在min到max范圍內的元素(包括min和max)

五、搭建主從

一個master可以擁有多個slave,一個slave又可以擁有多個slave,如此下去,形成來強大的多級服務器集群架構。

master用來寫數據,slave用來讀數據,經統計,網站的讀寫比率是10:1,也就是11個用戶中只有一個用戶在寫數據。

通過主從配置可以實現讀寫分離。

配置主服務器

查看當前主機的ip地址 ifconfig

修改/etc/redis/redis.conf文件 bind 當前主機ip

重啟redis服務

? sudo service redis stop

? sudo redis-server redis.conf

配置從服務器

復制/etc/redis/redis.conf文件 sudo cp redis.conf ./slave.conf

修改slave.conf文件

? bind 主機ip (如果是和主服務器為不同電腦,綁定本機ip即可)

? port 6378

? 添加一行slaveof 當前主機ip 主服務器端口(默認6379)

啟動redis服務 sudo redis-server slave.conf

查看主從關系 redis-cli -h 當前主機ip info Replication

PS:主服務器可讀寫,從服務器只能讀,且主從服務器數據可同步顯示

啟動redis-cli -h 主機ip -p 端口號

六、搭建集群

雖然一主可以多從,但如果同時的訪問量過大(1000w),主服務肯定就會掛掉;獲取發生自然災難,數據服務就掛掉了

大公司都會有很多的服務器。

集群的概念

集群是一組相互獨立的,通過高速網絡互聯的計算機,它們構成了一個組,并以單一系統的模式加以管理。一個客戶端與集群相互作用時,集群像是一個獨立的服務器,集群配置是用于提高可用性和可縮放性。當請求到來時首先由負載均衡服務器處理,把請求轉發到另外的一臺服務器上。

分類

軟件層面:只有一臺電腦,在這一臺電腦上啟動了多個redis服務

硬件層面:存在多臺實體的電腦,每臺電腦上都啟動了一個redis或者多個redis服務

集群的搭建

在一臺ubuntu機器上面搭建集群

配置機器1

在Desktop目錄下創建一個文件夾“redis_cluster",在此文件夾下創建7000.conf,內容如下

# 端口號 port 7000 # 主機ip bind 192.168.37.129 # 是否以守護(后臺)進程方式運行 daemonize yes # pid文件 pidfile 7000.pid # 是否使用集群 cluster-enabled yes # 集群的文件 cluster-config-file 7000_node.conf # 集群的超時時間 cluster-node-timeout 15000 # 備份相關 appendonly yes

在”redis_cluster“文件夾下創建7001.conf、7002.conf,除了7000改一下之外,內容和上面一樣

配置機器2

和配置機器1一樣,在Desktop目錄下創建redis_cluster文件夾,里面創建7003.conf、7004.conf、7005.conf,除了把主機ip和7000改一下之外,其他內容都一樣。

但是這里只有一臺機器,所以也將7003.conf、7004.conf、7005.conf兩個文件放在了機器1上

創建集群

先在redis_cluster文件夾下啟動redis服務

sudo redis-server 7000.conf sudo redis-server 7001.conf sudo redis-server 7002.conf sudo redis-server 7003.conf sudo redis-server 7004.conf sudo redis-server 7005.conf

redis的安裝包中包含了redis-trib.rb,用于創建集群

接下來的操作在機器1上進行

將命令復制,這樣可以在任何目錄下調用此命令

sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/
redis 5.0之前的版本創建集群

安裝ruby環境,因為redis-trib.rb是用ruby開發的

sudo apt-get install ruby

創建集群(必須先開啟redis服務)

–replicas 1 表示創建的集群模式是“一主一從”,共三個節點(Node)

redis-trib.rb create --replicas 1 192.168.37.129:7000 192.168.37.129:7001 192.168.37.129:7002 192.168.37.129:7003 192.168.37.129:7004 192.168.37.129:7005
redis 5.0之后的版本創建集群

5.0版本拋棄了redis-trib

直接運行如下命令,–cluster-replicas 1 表示創建的集群模式是“一主一從”,共三個節點(Node)

redis-cli --cluster create 192.168.37.129:7000 192.168.37.129:7001 192.168.37.129:7002 192.168.37.129:7003 192.168.37.129:7004 192.168.37.129:7005 --cluster-replicas 1


(0 slots)為slave服務,不是0的為master服務(redis 5.0之前的版本不管是slave還是master都顯示為master)

連接到集群

redis-cli -h 主機ip -p 端口號 -c

get key 獲取數據,如果數據不在當前節點會自動重定向

集群的注意點

在插入數據時,如果是連接的是從服務器,則會通過CRC16算法重定向到其他的一個主服務器進行插入。

如果是連接的是主服務器,也會通過CRC16算法重定向到其他的一個主服務器進行插入。

集群中每個節點都是平等的關系,每個節點都保存了各自的數據和整個集群的狀態,每個節點和其他所有節點連接,而且這些連接保持活躍,保證了我們只需要連接集群中的任意一個節點,就可以獲取到其他節點的數據。

集群會把數據存在一個master節點,然后在這個master和其對應的slave之間進行數據同步,只有當一個master掛掉之后,才會啟動一個對應的slave節點,充當master

必須要有三個或者以上的主節點,否則在創建集群時會失敗,并且當存活的主節點數小于總節點數的一半時,整個集群就無法提供服務了。

總結

以上是生活随笔為你收集整理的Redis基础知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。