Redis:Redis 是完全開源免費(fèi)的,遵守BSD協(xié)議雅任,是一個(gè)高性能單線程基于內(nèi)存的key-value數(shù)據(jù)庫沪么。
- REmote DIctionary Server(Redis) 是一個(gè)由Salvatore Sanfilippo寫的key-value存儲(chǔ)系統(tǒng)。
- Redis是一個(gè)開源的使用ANSI C語言編寫刊殉、遵守BSD協(xié)議记焊、支持網(wǎng)絡(luò)遍膜、可基于內(nèi)存亦可持久化的日志型恩尾、Key-Value數(shù)據(jù)庫翰意,并提供多種語言的API冀偶。
- 它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹担╲alue)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型圃伶。
Redis 與其他 key - value 緩存產(chǎn)品有以下三個(gè)特點(diǎn):
- Redis支持?jǐn)?shù)據(jù)的持久化搀罢,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中榔至,重啟的時(shí)候可以再次加載進(jìn)行使用铅鲤。
- Redis不僅僅支持簡單的key-value類型的數(shù)據(jù)邢享,同時(shí)還提供list骇塘,set款违,zset插爹,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
- Redis支持?jǐn)?shù)據(jù)的備份溢陪,即master-slave模式的數(shù)據(jù)備份杉编。
Redis 優(yōu)勢
- 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
- 豐富的數(shù)據(jù)類型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作蛾坯。
- 原子 – Redis的所有操作都是原子性的救军,同時(shí)Redis還支持對(duì)幾個(gè)操作全并后的原子性執(zhí)行唱遭。
- 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性疫鹊。
安裝
Window 下安裝
下載地址:https://github.com/MSOpenTech/redis/releases
Linux 下安裝
下載地址:http://redis.io/download拆吆,下載最新文檔版本枣耀。
Ubuntu 下安裝
在 Ubuntu 系統(tǒng)安裝 Redi 可以使用以下命令:
$sudo apt-get update
$sudo apt-get install redis-server
Mac 下安裝
官網(wǎng)http://redis.io/ 下載最新的穩(wěn)定版本,這里是3.2.0
- 官網(wǎng)http://redis.io/ 下載最新的穩(wěn)定版本,這里是3.2.0
- sudo mv 到 /usr/local/
- sudo tar -zxf redis-3.2.0.tar 解壓文件
- 進(jìn)入解壓后的目錄 cd redis-3.2.0
- sudo make test 測試編譯
- sudo make install
可視化工具
- redis desktop manager
下載地址:https://redisdesktop.com/download
簡單命令
啟動(dòng) Redis
$ redis-server
查看 redis 是否啟動(dòng)佩微?
$ redis-cli
在遠(yuǎn)程服務(wù)上執(zhí)行命令
$ redis-cli -h host -p port -a password
key的簡單命令
- DEL key
該命令用于在 key 存在時(shí)刪除 key哺眯。 - DUMP key
序列化給定 key 奶卓,并返回被序列化的值夺姑。 - EXISTS key
檢查給定 key 是否存在盏浙。 - EXPIRE key seconds
為給定 key 設(shè)置過期時(shí)間废膘。 - EXPIREAT key timestamp
EXPIREAT 的作用和 EXPIRE 類似丐黄,都用于為 key 設(shè)置過期時(shí)間艰争。 不同在于 EXPIREAT 命令接受的時(shí)間參數(shù)是 UNIX 時(shí)間戳(unix timestamp)甩卓。 - PEXPIRE key milliseconds
設(shè)置 key 的過期時(shí)間以毫秒計(jì)猛频。 - PEXPIREAT key milliseconds-timestamp
設(shè)置 key 過期時(shí)間的時(shí)間戳(unix timestamp) 以毫秒計(jì) - KEYS pattern
查找所有符合給定模式( pattern)的 key 。 - MOVE key db
將當(dāng)前數(shù)據(jù)庫的 key 移動(dòng)到給定的數(shù)據(jù)庫 db 當(dāng)中毡熏。 - PERSIST key
移除 key 的過期時(shí)間痢法,key 將持久保持财搁。 - PTTL key
以毫秒為單位返回 key 的剩余的過期時(shí)間尖奔。 - TTL key
以秒為單位提茁,返回給定 key 的剩余生存時(shí)間(TTL, time to live)茴扁。 - RANDOMKEY
從當(dāng)前數(shù)據(jù)庫中隨機(jī)返回一個(gè) key 铲咨。 - RENAME key newkey
修改 key 的名稱 - RENAMENX key newkey
僅當(dāng) newkey 不存在時(shí)纤勒,將 key 改名為 newkey 摇天。 - TYPE key
返回 key 所儲(chǔ)存的值的類型。
redis中的事務(wù)
redis中也是有事務(wù)的裳仆,不過這個(gè)事務(wù)沒有mysql中的完善歧斟,只保證了一致性和隔離性静袖,不滿足原子性和持久性队橙。
redis事務(wù)使用multi捐康、exec命令
- 原子性解总,redis會(huì)將事務(wù)中的所有命令執(zhí)行一遍倾鲫,哪怕是中間有執(zhí)行失敗也不會(huì)回滾隙疚。kill信號(hào)供屉、宿主機(jī)宕機(jī)等導(dǎo)致事務(wù)執(zhí)行失敗伶丐,redis也不會(huì)進(jìn)行重試或者回滾哗魂。
- 持久性录别,redis事務(wù)的持久性依賴于redis所使用的持久化模式,遺憾的是各種持久化模式也都不是持久化的。
- 隔離性梢褐,redis是單進(jìn)程耿眉,開啟事務(wù)之后,會(huì)執(zhí)行完當(dāng)前連接的所有命令直到遇到exec命令热押,才處理其他連接的命令桶癣。