1、簡述redis應用場景。
Redis
- 概念:Redis(Remote Dictionary Server),即遠程字典服務,是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。
- 特征:
- 數據間沒有必然的聯系
- 內部采用單線程機制進行工作
- 高性能。官方提供測試數據,50個并發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s。
- 多數據類型支持:字符串(string)、列表(list)、散列(hash)、集合(set)、有序集合(sorted_set)。
- 持久化支持。Redis可以進行災難性恢復,比如突然斷電的情況。通過將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用來保證數據的可恢復。
- 應用場景:
- 分布式鎖。
- 消息隊列。
- 分布式數據共享,如分布式集群架構中的session分離。
- 時效性信息控制,如驗證碼控制(比如驗證碼五分鐘之內有效)、投票控制等。
- 即時信息查詢,如各位排行榜、各類網站訪問統計、公交到站信息、在線人數等。
- 任務隊列,如秒殺、搶購、購票排隊等。
- 為熱點數據加速查詢(主要應用場景),如熱點商品、熱點新聞、熱點資訊、推廣類等高訪問量信息等。
2、redis的優點是什么??
1)響應快速
Redis 響應非常快,每秒可以執行大約 110 000 個寫入操作,或者 81 000 個讀操作,其速度遠超數據庫。如果存入一些常用的數據,就能有效提高系統的性能。
2)支持 6 種數據類型
它們是字符串、哈希結構、列表、集合、可排序集合和基數。比如對于字符串可以存入一些?Java?基礎數據類型,哈希可以存儲對象,列表可以存儲 List 對象等。這使得在應用中很容易根據自己的需要選擇存儲的數據類型,方便開發。
對于 Redis 而言,雖然只有 6 種數據類型,但是有兩大好處:一方面可以滿足存儲各種數據結構體的需要;另外一方面數據類型少,使得規則就少,需要的判斷和邏輯就少,這樣讀/寫的速度就更快。
3)操作都是原子的
所有 Redis 的操作都是原子的,從而確保當兩個客戶同時訪問 Redis 服務器時,得到的是更新后的值(最新值)。在需要高并發的場合可以考慮使用 Redis 的事務,處理一些需要鎖的業務。
4)MultiUtility 工具
Redis 可以在如緩存、消息傳遞隊列中使用(Redis 支持“發布+訂閱”的消息模式),在應用程序如 Web 應用程序會話、網站頁面點擊數等任何短暫的數據中使用。
3、使用yum在線安裝redis
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum list | grep redis
[root@localhost ~]# yum install redis -y
systemctl enable --now redis 啟動服務并開機自啟動
redis-cli 進
exit? 出
4、源碼安裝redis并配置服務腳本?
下載??? wget -c http://download.redis.io/releases/redis-4.0.1.tar.gz
解壓
安裝
啟動
mkdir -p /etc/redis
cp redis.conf? /etc/redis
sed -i.bak 's/daemonize no/daemonize yes/' /etc/redis/redis.conf
redis-server /etc/redis/redis.conf
登錄
redis-cli
?
源碼配置服務腳本:
1、創建用戶和組
groupadd -g 935 -r redis
useradd -u 935 -g 935 -r -d /var/lib/redis -c 'redis server' -s /sbin/nologin redis
2、修改配置文件/etc/redis/redis.conf
3、創建服務腳本
[root@localhost ~]# vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --supervised systemd
ExecStop=/usr/bin/kill 'pidof redis-server'
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
?
[root@localhost ~]# ?systemctl daemon-reload
測試
?
5、常用的NoSQL數據庫有那些,列舉不少于3個。
1. In-Memory KV Store : Redis
in memory key-value store,同時提供了更加豐富的數據結構和運算的能力,成功用法是替代memcached,通過checkpoint和commit log提供了快速的宕機恢復,同時支持replication提供讀可擴展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盤的key-value storage, 模型單一簡單,數據量不受限于內存大小,數據落盤高可靠,Google的幾位大神出品的精品,LSM模型天然寫優化,順序寫盤的方式對于新硬件ssd再適合不過了,不足是僅提供了一個庫,需要自己封裝server端。
3. Document Store: Mongodb
分布式nosql,具備了區別mysql的最大亮點:可擴展性。mongodb 最新引人的莫過于提供了sql接口,是目前nosql里最像mysql的,只是沒有ACID的特性,發展很快,支持了索引等特性,上手容易,對于數據量遠超內存限制的場景來說,還需要慎重。