一、Redis的簡(jiǎn)介
1蜻拨、Redis--REmote DIctionary Server(遠(yuǎn)程字典服務(wù)器)
2、Redis是一個(gè)使用ANSI ?C語言編寫的開源數(shù)據(jù)庫
3、高性能的key-value數(shù)據(jù)庫
4溅话、內(nèi)存數(shù)據(jù)庫,支持?jǐn)?shù)據(jù)持久化(將內(nèi)存數(shù)據(jù)導(dǎo)出到硬盤上)
5、Redis 提供了java, C/C++, C#, PHP, JavaScript, Perl, Object-C, Python, Ruby, Erlang等客戶端
6歌焦、從2010年3月15日起,Redis的開發(fā)工作由VMware主持
7飞几、從2013年5月開始,Redis的開發(fā)由Pivotal贊助
二、Redis網(wǎng)址
1独撇、Redis官網(wǎng): ?https://redis.io
2屑墨、Redis中國(guó)官網(wǎng): ?http://redis.cn
三、Redis的常用類型
數(shù)據(jù)類型(type)-->string, hash, list, set, sorted set
編碼方式(encoding)-->raw, int, ht, zipmap, linkedlist, ziplist, intset
數(shù)據(jù)指針(ptr)
虛擬內(nèi)存(vm)
其他信息
四券勺、Redis開發(fā)語言的客戶端介紹(網(wǎng)址)
1绪钥、Redis官網(wǎng):https://reids.io/clients
2、Redis中國(guó)官網(wǎng):http://redis.cn/clients.html
五关炼、Redis版本下載
1程腹、Linux:
????Redis2.8.0.tar.gz
????http://download.redis.io/releases/
2、Windows:
????Redis-x64-2.8.2402
????由Microsoft Open Tech Group維護(hù)
????https://github.com/MicrosoftArchive/redis
六儒拂、Redis安裝
Windows下載完成后解壓就可以使用
七寸潦、Redis單實(shí)例配置
1色鸳、Redis.conf配置文件
2、Port端口
3见转、Requirepass密碼
4命雀、Masterauth主從同步中在slave配置master的密碼
八、Redis單實(shí)例服務(wù)端斩箫,客戶端啟動(dòng)及關(guān)閉
1吏砂、啟動(dòng)redis服務(wù)端
????Redis-server
????Redis-server ${redis.conf}:添加配置文件
????Redis-server --port ${port} :添加端口號(hào)
2、啟動(dòng)redis客戶端
????Redis-cli
????Redis-cli -p ${port}:服務(wù)端添加端口號(hào)客戶端也需要添加
????Redis-cli -h ${ip}:添加ip
????Redis-cli -a ${password}:配置文件加入密碼乘客,客戶端需要添加密碼
????Redis-cli -p ${port} -h ${ip} -a ${password} :加入端口號(hào)狐血,ip和密碼
3、關(guān)閉客戶端
????Redis-cli shutdown(默認(rèn)關(guān)閉6379端口)
????Redis-cli -p ${port} shutdown:加入端口號(hào)
????Redis-cli -h ${ip} shutdown:加入ip
????Redis-cli -p ${port} -h ${ip} shutdown:加入端口號(hào)和ip
九易核、Redis單實(shí)例環(huán)境驗(yàn)證
1匈织、執(zhí)行ping命令
2、執(zhí)行redis set 和 get 命令檢測(cè)一下
十牡直、Redis的基本操作
1缀匕、打開服務(wù)端redis-server.exe
2、打開客戶端redis-cli.exe
3碰逸、關(guān)閉客戶端,并將文件保存到磁盤中:redis-cli shutdown
4羽德、-p(端口,默認(rèn)的端口是6379) ?-h(ip,默認(rèn)的IP是127.0.0.1) ?-a(密碼,默認(rèn)沒有密碼)
5恋脚、測(cè)試服務(wù)是否成功: ?ping 返回 PONG
6、終止命令 Ctrl + c
7、添加密碼: ?requirepass 密碼
8丑掺、主從: ?masterauth 密碼
9厢拭、命名空間默認(rèn)為0, 共有16個(gè),如果想要切換空間可以:select value(例 select 1)
十一启昧、Redis系統(tǒng)級(jí)基礎(chǔ)命令
1炊汤、查看版本信息:info
????Keyspace(相當(dāng)于數(shù)據(jù)庫,默認(rèn)含有16個(gè)數(shù)據(jù)庫)
2、清除當(dāng)前空間:flushdb
3厌蔽、清除所有空間:flushall
4牵辣、查看key的數(shù)量:dbsize
5、人工保存到磁盤:save
6奴饮、退出鏈接:quit
十二纬向、Redis的鍵命令
1.?刪除:del key
2.?判斷是否含有某key值:exists key
3.?剩余過期時(shí)間:ttl key
????返回: -1 永久?
????????????-2 不存在
????設(shè)置過期時(shí)間:expire?key time(s:秒)
4.?返回key的類型:type?key
5.?隨機(jī)返回key值:randomkey
6.?重命名key: ?rename??oldkey ?newkey
????覆蓋已經(jīng)存在的key值
????不去校驗(yàn)是否已經(jīng)存在key
7.?重命名key: ?renamenx??oldkey ?newkey
????校驗(yàn)已經(jīng)存在的key,如果存在返回0,不存在繼續(xù)重命名的操作
十三、五種數(shù)據(jù)結(jié)構(gòu)
1戴卜、String字符串(nx結(jié)尾的命令會(huì)進(jìn)行一些判斷)
1.?設(shè)置: set?key value
2.?設(shè)置:setnx?key value
????驗(yàn)證是否含有想要設(shè)置的key,如果有,則不能成功設(shè)置,返回0如果沒有,則設(shè)置成功,返回1
3.?設(shè)置有效期的String(秒): ?setex?key time(s) value
4.?設(shè)置有效期的string(毫秒): ?psetex?key time(ms) value
5.?獲取:get?key
6.?獲取value的區(qū)間值:getrange?key index index (下標(biāo)從0開始)
7.?先獲取再設(shè)置:getset?key value
????先獲取key的值,再進(jìn)行設(shè)置,并且返回oldvalue(舊值)
8.?同時(shí)設(shè)置多個(gè)值:mset?key1 value1 key2 value2
9.?同時(shí)設(shè)置多個(gè)值:msetnx?key1 value1 key2 value2
????驗(yàn)證是否含有想要設(shè)置的key,如果有,則不能成功設(shè)置,返回0如果沒有,則設(shè)置成功,返回1
????Msetnx具有事務(wù)的原子性
10.?同時(shí)獲取多個(gè)值:mget?key1 key2
11.?獲取key值得長(zhǎng)度:strlen?key
12.?追加字符串:append?key addValue
????在key原來value的基礎(chǔ)上,在末尾加上addValue
13.?操作數(shù)值加一:incr?key(數(shù)值類型)
????increase
14.?操作數(shù)值加想要的步長(zhǎng):incrby?key count(想要每次增加的數(shù)量)
15.?操作數(shù)值減一:decr?key(數(shù)值類型)
????decrease
16.?操作數(shù)值減想要的步長(zhǎng):decrby?key count(每次想要減少的數(shù)量)
2逾条、哈希hash
1.?設(shè)置:hset?key1 key2 value(例:hset map name laowang)
2.?設(shè)置(檢查):hsetnx key1 key2 value
????檢查將要設(shè)置的key2和value是否存在于key1中,存在不成功,不存在設(shè)置成功
3.?檢查key是否存在:hexists?key1 key2
????成功返回1; 失敗返回0
4.?獲取:hget?key1 key2
????成功返回value, 失敗返回nil
5.?獲取全部數(shù)據(jù)(包括key2 和value):hgetall key1
6.?獲取key2值:hkeys?key1
7.?獲取value值:hvals?key1
8.?獲取數(shù)量(獲取的是key2的數(shù)量):hlen?key1
9.?設(shè)置多個(gè)數(shù)據(jù):hmset?key1 key2 value2 key3 value3
10.?獲取多個(gè)數(shù)據(jù):hmget?key1 key2 key3
11.?刪除多個(gè)數(shù)據(jù):hdel?key1 key2 key3
3、列表list
1.?添加:lpush?key value1 value2 value3
????第一個(gè)進(jìn)的值(value1)在索引位置最后; 最后一個(gè)進(jìn)的值(value3)在索引位置0;
????Value值可以重復(fù),有序
2.?獲取長(zhǎng)度:llen?key
3.?獲取key中的區(qū)間值:lrange?key index1 index2
4.?設(shè)置指定索引位置的值:lset?key index value
5.?獲取指定索引位置的值:lindex?key index
6.?刪除索引位置為0的元素:lpop?key
7. 刪除索引位置最后的元素:rpop?key
4投剥、集合set
添加,刪除,查找的時(shí)間復(fù)雜度為 o1
1.?添加:sadd?key value1 value2 value3
????無序,不能重復(fù)
2.?返回集合的數(shù)量:scard?key
3.?查看集合中的成員:smembers?key
4.?差集:sdiff?key1 key2
????哪一個(gè)key在前面,就返回哪一個(gè)key的不相同的值
5.?交集:sinter?key1 key2
????返回相同的值
6.?并集:sunion?key1 key2
????返回所有的值,如果有重復(fù)的值只返回一個(gè)
7.?隨機(jī)返回指定數(shù)量的數(shù)據(jù):srandmember?key count
8.?驗(yàn)證是否是指定集合的成員元素:sismember?key value
9.?移除集合中一個(gè)或多個(gè)元素:srem key value1 value2
10.?移除一個(gè)隨機(jī)元素并且返回移除的元素:spop key
5师脂、有序集合sortedset
1.?添加:zadd?key value1 key1 value2 key2 (例: zadd sortedset 100 a 200 b)
????Value需要是數(shù)值
????根據(jù)value值從小到大排序
? ? key不能重復(fù)
2.?獲取存儲(chǔ)的數(shù)量:zcard key
3.?獲取key中某個(gè)key1或者key2··的value值:zscore key key1
4.?獲取指定分?jǐn)?shù)區(qū)間的數(shù)量:zcount key value1 value2(例: zcount key 0 300)
5.?返回指定key的索引位置: zrank key key1
6.?給指定的key增加指定的數(shù)值: zincrby key value1 key1
7.?返回指定索引位置區(qū)間的key值: zrange key index1 index2
8.?返回指定索引位置區(qū)間的key值和value值:zrange key index1 index2 withscores