Shell 流程控制
836
2022-05-29
1 Redis:Remote Dictionary Server(遠程字典服務器)
是完全開源免費的,用C語言編寫的,遵守BSD協議,是一個高性能的(Key/Value)分布式內存數據庫,基于內存運行,并支持持久化的NoSQL數據庫,是當前最熱門的NoSQL數據庫之一,也被人們稱為數據結構服務器
Redis與其他key-value緩存產品有以下三個特點
Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用
Redis不僅僅支持簡單的 key-value 類型的數據,同時還提供list、set、zset、hash等數據結構的存儲
Redis支持數據的備份,即master-slave模式的數據備份
Redis-benchmark是官方自帶的Redis性能測試工具,可以有效的測試Redis服務的性能
# 測試一:100個并發連接,100000個請求,檢測host為localhost 端口為6379的redis服務器性能 redis-benchmark -h localhost -p 6379 -c 100 -n 100000 # 測試出來的所有命令只舉例一個! ====== SET ====== 100000 requests completed in 1.88 seconds # 對集合寫入測試 100 parallel clients # 每次請求有100個并發客戶端 3 bytes payload # 每次寫入3個字節的數據,有效載荷 keep alive: 1 # 保持一個連接,一臺服務器來處理這些請求 17.05% <= 1 milliseconds 97.35% <= 2 milliseconds 99.97% <= 3 milliseconds 100.00% <= 3 milliseconds # 所有請求在 3 毫秒內完成 53248.14 requests per second # 每秒處理 53248.14 次請求
2、企業緩存產品介紹
Memcached: 優點:高性能讀寫、單一數據類型、支持客戶端式分布式集群、一致性hash多核結構、多線程讀寫性能高。 缺點:無持久化、節點故障可能出現緩存穿透、分布式需要客戶端實現、跨機房 數據同步困難、架構擴容復雜度高 Redis: 優點:高性能讀寫、多數據類型支持、數據持久化、高可用架構、支持自定義虛擬內存、支持分布式分片集群、單線程讀寫性能極高 缺點:多線程讀寫較Memcached慢 新浪、京東、直播類平臺、網頁游戲 memcache 與redis在讀寫性能的對比 memcached 適合,多用戶訪問,每個用戶少量的rw redis 適合,少用戶訪問,每個用戶大量rw Tair: 優點:高性能讀寫、支持三種存儲引擎(ddb、rdb、ldb)、支持高可用、支 持分布式分片集群、支撐了幾乎所有淘寶業務的緩存。 缺點:單機情況下,讀寫性能較其他兩種產品較慢
3 Redis使用場景介紹
Memcached:多核的緩存服務,更加適合于多用戶并發訪問次數較少的應用場景
Redis:單核的緩存服務,單節點情況下,更加適合于少量用戶,多次訪問的應用場景
Redis一般是單機多實例架構,配合redis集群出現
4 ?Redis 單線程
Redis為什么這么快?
1)誤區1:高性能服務器 一定是多線程來實現的, 誤區2:多線程 一定比單線程效率高
2)解釋
redis的數據全都在內存里,單線程的去操作效率最高的
多線程的本質就是CPU模擬出來多個線程的情況,模擬代價會導致上下文的切換,單對于一個內存的系統來說,它沒有上下文的切換就是效率最高的
redis 用單個CPU綁定一塊內存的數據,然后針對這塊內存多次讀寫,都是在一個CPU上完成
例:
一次CPU上下文的切換大概在 1500ns 左右。從內存中讀取1MB 的連續數據,耗時大約為 250us, 假設1MB的數據由多個線程讀取了1000次,那么就有1000次時間上下文的切換,那么就有1500ns *1000 = 1500us , 單線程的讀完1MB數據才250us ,上下文的切換就用了1500us了,還不算每次讀一部分數據的時間
5 Redis部署
yum install centos-release-scl yum install devtoolset-7-gcc* scl enable devtoolset-7 bash $ wget http://download.redis.io/releases/redis?6.0.6.tar.gz $ tar xzf redis-6.0.6.tar.gz $ cd redis-6.0.6 $ make 啟動: redis-server & 連接測試: redis-cli
6 常規操作
6.1 在線查看和修改配置
CONFIG GET * # 查看所有配置參數 CONFIG GET requirepass CONFIG GET r* CONFIG SET requirepass 123 #在線改配置
6.2 數據庫切換
默認16個數據庫,類似數組下標從零開始,初始默認使用零號庫 查看 redis.conf ,里面有默認的配置 databases 16 127.0.0.1:6379> select 7 #切換數據庫 OK 127.0.0.1:6379> dbsize # Dbsize查看當前數據庫的key的數量 (integer) 12 Flushdb:清空當前庫 Flushall:清空全部的庫
6.3 KEY的通用操作
KEYS * keys a keys a* 查看已存在所有鍵的名字 **** TYPE 返回鍵所存儲值的類型 **** EXPIRE\ PEXPIRE 以秒\毫秒設定生存時間 EXPIRE a 100 ; SETEX b bob 200 生成時候指定200S 生存時間 TTL\ PTTL 以秒\毫秒為單位返回生存時間 *** PERSIST 取消生存時間設置 *** DEL 刪除一個key EXISTS 檢查是否存在 EXISTS a 判斷a 是否存在 RENAME 變更KEY名 unlink key 根據value選擇非阻塞刪除 ---例子: 127.0.0.1:6379> set name alex 127.0.0.1:6379> EXPIRE name 60 (integer) 1 127.0.0.1:6379> ttl name (integer) 57 127.0.0.1:6379> set a bob ex 60 OK 127.0.0.1:6379> ttl bob (integer) 43 # 剩余多少時間過期 127.0.0.1:6379> PERSIST bob (integer) 1 127.0.0.1:6379> set name alex 127.0.0.1:6379> set name2 sully 127.0.0.1:6379> keys n* 1) "name2" 2) "name" 127.0.0.1:6379> type name string 127.0.0.1:6379> EXISTS name (integer) 1 # 代表 true 127.0.0.1:6379> exists name3 (integer) 0 #代表false 127.0.0.1:6379> TTL name2 (integer) -1 # 永不過期
Redis 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。