什么是Redis?
Redis,英文名叫(REmote DIctionary Server遠程字典服務)是一個開源的使用ANSI?C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。
Redis相比其他鍵值數據存儲系統(tǒng)有什么特點?
1.Redis將其數據庫完全保存在內存中,僅使用磁盤進行持久化。
2.與其它鍵值數據存儲相比,Redis有一組相對豐富的數據類型(包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。
3.Redis可以將數據復制到任意數量的從機中。
Redis自己的優(yōu)點
異???/b>- Redis非常快,每秒可執(zhí)行大約110000次的設置(SET)操作,每秒大約可執(zhí)行81000次的讀取/獲取(GET)操作。
支持豐富的數據類型- Redis支持開發(fā)人員常用的大多數數據類型,例如列表,集合,排序集和散列等等。這使得Redis很容易被用來解決各種問題,因為我們知道哪些問題可以更好使用地哪些數據類型來處理解決。
操作具有原子性- 所有Redis操作都是原子操作,這確保如果兩個客戶端并發(fā)訪問,Redis服務器能接收更新的值。
多實用工具- Redis是一個多實用工具,可用于多種用例,如:緩存,消息隊列(Redis本地支持發(fā)布/訂閱),應用程序中的任何短期數據,例如,web應用程序中的會話,網頁命中計數等。
在Ubuntu上安裝Redis環(huán)境
打開Ubuntu終端輸入以下命令


啟動redis

檢查redis是否在工作

在上面的提示中,127.0.0.1是計算機的IP地址,6379是Redis服務器端口號,鍵入ping命令

出現PONG表明Redis安裝成功
接下來你可以選擇安裝Redis桌面管理器(提供用于管理Redis的鍵和數據的UI),Redis桌面管理軟件,不過只有Windows版本是免費的,Ubuntu和Mac OS X是收費的。
Redis配置
在Redis中,在Redis的根目錄下有一個配置文件(redis.conf)。當然您可以通過RedisCONFIG命令獲取和設置所有的Redis配置。
語法
以下是Redis中的CONFIG命令的基本語法。
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
示例


編輯配置
1.直接編輯`redis.conf`文件
2.通過`CONFIG SET`命令更新配置
語法
以下是CONFIG SET命令的基本語法。
`redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE`
示例

Redis數據類型
Redis支持5種數據類型。
Redis中的字符串是一個字節(jié)序列。Redis中的字符串是二進制安全的,這意味著它們的長度不由任何特殊的終止字符決定。因此,可以在一個字符串中存儲高達512兆字節(jié)的任何內容

注意:Redis命令不區(qū)分大小寫,所以set和SET命令是一樣的
散列/哈希
Redis散列/哈希(Hashes)是鍵值對的集合。Redis散列/哈希是字符串字段和字符串值之間的映射。因此,它們用于表示對象。
示例
散列/哈希數據類型用于存儲包含用戶的基本信息的用戶對象。這里HMSET,HGETALL是Redis的命令,用于獲取鍵的值,而mykey是鍵的名稱。
每個散列/哈??梢源鎯Χ噙_2^32 - 1個健-值對(超過40億個)。

列表
Redis列表只是字符串列表,按插入順序排序。您可以向Redis列表的頭部或尾部添加元素。
列表的最大長度為2^32 - 1個元素(4294967295,每個列表可容納超過40億個元素)。

lpush是redis列表插入命令,mylist是我列表的名稱,first...是我插入的字符串
lrange是redis列表查詢命令,按照下標0-5取值,list可以重復字符串
集合
Redis集合是字符串的無序集合。在Redis中,您可以添加,刪除和測試成員存在的時間O(1)復雜性。
一個集合中的最大成員數量為2^32 - 1(即4294967295,每個集合中元素數量可達40億個)個。

注意:redis被添加了兩次,但是集合元素是唯一的,所以只有一個redis
可排序集合
Redis可排序集合類似于Redis集合,是不重復的字符集合。 不同之處在于,排序集合的每個成員都與分數相關聯,這個分數用于按最小分數到最大分數來排序的排序集合。雖然成員是唯一的,但分數值可以重復。

redis的zset也是元素唯一的集合,不過有一個score來關聯元素,進行從小到大的排序,而且后插入的sqlite的score覆蓋了前一個sqlite的score,所以排在mysql后面