Redis是什麼 ?
Redis(Remote Dictionary Server )
,遠程字典服務- 它是一個開源的使用ANSI
C語言
編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫
,並提供多種語言的API。 - 免費和開源,是當下最熱門的
NoSQL
技術之一,也被人們稱之爲結構化數據庫
。 redis
會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步
。
Redis能做什麼?
- 內存存儲、持久化,內存中是斷電即失、所以說持久化很重要(rdb、aof)
- 效率高,可以用於高速緩存
- 發佈訂閱系統
- 地圖信息分析
- 計時器、計數器,瀏覽量
Redis的特性
- 多樣的數據類型
- 持久化
- 集羣
- 事務
linux安裝redis
- 服務器安裝
- 下載安裝包到linux
- 解壓
- 安裝環境
yum install gcc-c++
- 配置環境
make
- 檢查
make install
- redis默認不是後臺啓動的,要修改配置文件
dameonize=no
改爲yes
- 啓動Redis服務
redis-server config redis.conf
- 使用redis-cli 進行連接測試
redis-cli -p 6379
- 查看redis的進程是否開啓
ps -ef|grep redis
- 關閉服務
shutdown
redis-benchmark
:壓力測試工具
它是官方自帶的性能測試工具
基礎知識
redis
默認有16個數據庫,在redis.conf
中可以看到。默認使用的是第0個數據庫。- 可以使用
select
進行切換數據庫 DBSIZE
查看數據庫大小keys *
#查看數據庫所有的key- 清除當前數據庫
flushdb
- 清除全部數據庫的內容
FLUSHALL
- 爲什麼
redis
是 6379?作者是某女歌星的粉絲,哪位女歌星的名字在鍵盤上對應的鍵位是6379。mysql
端口是3306,是她女兒名字的縮寫。 - Redis 是C 語言寫的,官方提供的數據爲
100000+
的QPS
,完全不比同樣是使用key-vale
的Memecache
差! - Redis 是單線程的,而且是很快的
官方表示,Redis
是基於內存操作,CPU
不是Redis
性能瓶頸,而是根據機器的內存和網絡帶寬,既然可以使用單線程來實現,就使用單線程了,但是redis6.0之後更新爲多線程了。 - Redis 爲什麼單線程還這麼快?
誤區1: 高性能的服務器不一定都是多線程的
誤區2: 多線程(CPU上下文會切換)也不一定比單線程效率高
核心: redis 是將所有的數據全部放在內存中的,所以說使用單線程去操作效率就是最高的,多線程(CPU上下文會切換:耗時的操作!!!),對於內存系統來說,如果沒有上下文切換效率就是最高的!多次讀寫都是在一個CPU上的,在內存情況下,這個就是最佳的方案。