禁用Linux的防火墻:Linux(CentOS7)里執(zhí)行命令
systemctl stop firewalld.service
redis.conf中注釋掉bind 127.0.0.1 ,然后 protect-mode no。
redis啟動(dòng)
啟動(dòng)
1、備份redis.conf:拷貝一份redis.conf到其他目錄
2、修改redis.conf文件將里面的daemonize no 改成 yes,讓服務(wù)在后臺(tái)啟動(dòng)
3、啟動(dòng)命令:執(zhí)行 redis-server /myredis/redis.conf
4、用客戶端訪問: Redis-cli
多個(gè)端口可以 Redis-cli –p 6379
5、測(cè)試驗(yàn)證: ping
redis關(guān)閉
單實(shí)例關(guān)閉:
Redis-cli shutdown
也可以進(jìn)入終端后再關(guān)閉 shutdown
多實(shí)例關(guān)閉,指定端口關(guān)閉:
Redis-cli -p 6379 shutdown
Redis五大數(shù)據(jù)類型–key
| 命令 | 描述 |
|---|---|
| keys * | 查詢當(dāng)前庫的所有鍵 |
| exists | 判斷某個(gè)鍵是否存在 |
| type | 查看鍵的類型 |
| del | 刪除某個(gè)鍵 |
| expire | 為鍵值設(shè)置過期時(shí)間,單位秒。 |
| ttl | 查看還有多少秒過期,-1表示永不過期 (-2表示已過期) |
| dbsize | 查看當(dāng)前數(shù)據(jù)庫的key的數(shù)量 |
| Flushdb | 清空當(dāng)前庫(慎用?。?/td> |
| Flushall | 通殺全部庫(刪庫跑路?。?!忘了這個(gè)命令吧) |
Redis五大數(shù)據(jù)類型–String
String是Redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個(gè)key對(duì)應(yīng)一個(gè)value。
String類型是二進(jìn)制安全的。意味著Redis的string可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對(duì)象 。
String類型是Redis最基本的數(shù)據(jù)類型,一個(gè)Redis中字符串value最多可以是512M
| 命令 | 描述 |
|---|---|
| get | 查詢對(duì)應(yīng)鍵值 |
| set | 添加鍵值對(duì) |
| append | 將給定的 追加到原值的末尾 |
| strlen | 獲得值的長度 |
| setnx | 只有在 key 不存在時(shí)設(shè)置 key 的值 |
| incr | 將 key 中儲(chǔ)存的數(shù)字值增1;只能對(duì)數(shù)字值操作,如果為空,新增值為1 |
| decr | 將 key 中儲(chǔ)存的數(shù)字值減1;只能對(duì)數(shù)字值操作,如果為空,新增值為-1 |
| incrby / decrby <步長> | 將 key 中儲(chǔ)存的數(shù)字值增減。自定義步長。 |
| mset … | 同時(shí)設(shè)置一個(gè)或多個(gè) key-value對(duì) |
| mget … | 同時(shí)獲取一個(gè)或多個(gè) value |
| msetnx … | 同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì),當(dāng)且僅當(dāng)所有給定 key 都不存在。 |
| getrange <起始位置> <結(jié)束位置> | 獲得值的范圍,類似java中的substring |
| setrange <起始位置> | 用 覆寫 所儲(chǔ)存的字符串值, 從<起始位置>開始。 |
| setex <過期時(shí)間> | 設(shè)置鍵值的同時(shí),設(shè)置過期時(shí)間,單位秒。 |
| getset | 以新?lián)Q舊,設(shè)置了新值同時(shí)獲得舊值。 |
Redis五大數(shù)據(jù)類型–list
List
單鍵多值
Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素導(dǎo)列表的頭部(左邊)或者尾部(右邊)。
它的底層實(shí)際是個(gè)雙向鏈表,對(duì)兩端的操作性能很高,通過索引下標(biāo)的操作中間的節(jié)點(diǎn)性能會(huì)較差。
| 命令 | 描述 |
|---|---|
| lpush/rpush … | 從左邊/右邊插入一個(gè)或多個(gè)值。 |
| lpop/rpop | 從左邊/右邊吐出一個(gè)值。;值在鍵在,值光鍵亡。 |
| rpoplpush | 從列表右邊吐出一個(gè)值,插到列表左邊。 |
| lrange | 按照索引下標(biāo)獲得元素(從左到右) |
| lindex | 按照索引下標(biāo)獲得元素(從左到右) |
| llen | 獲得列表長度 |
| linsert before | 在的后面插入 插入值 |
| lrem | 從左邊刪除n個(gè)value(從左到右) |
Redis五大數(shù)據(jù)類型–set
Redis set對(duì)外提供的功能與list類似是一個(gè)列表的功能,特殊之處在于set是可以自動(dòng)排重的,當(dāng)你需要存儲(chǔ)一個(gè)列表數(shù)據(jù),又不希望出現(xiàn)重復(fù)數(shù)據(jù)時(shí),set是一個(gè)很好的選擇,并且set提供了判斷某個(gè)成員是否在一個(gè)set集合內(nèi)的重要接口,這個(gè)也是list所不能提供的。
Redis的Set是string類型的無序集合。它底層其實(shí)是一個(gè)value為null的hash表,所以添加,刪除,查找的復(fù)雜度都是O(1)。
| 命令 | 描述 |
|---|---|
| sadd … | 將一個(gè)或多個(gè) member 元素加入到集合 key 當(dāng)中,已經(jīng)存在于集合的 member 元素將被忽略。 |
| smembers | 取出該集合的所有值。 |
| sismember | 判斷集合是否為含有該值,有返回1,沒有返回0 |
| scard | 返回該集合的元素個(gè)數(shù)。 |
| srem … | 刪除集合中的某個(gè)元素。 |
| spop | 隨機(jī)從該集合中吐出一個(gè)值。 |
| srandmember | 隨機(jī)從該集合中取出n個(gè)值。不會(huì)從集合中刪除 |
| sinter | 返回兩個(gè)集合的交集元素。 |
| sunion | 返回兩個(gè)集合的并集元素。 |
| sdiff | 返回兩個(gè)集合的差集元素。 |
Redis五大數(shù)據(jù)類型–hash
Redis hash 是一個(gè)鍵值對(duì)集合。
Redis hash是一個(gè)string類型的field和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象。
類似Java里面的Map
| 命令 | 描述 |
|---|---|
| hset | 給集合中的 鍵賦值 |
| hget | 從集合 取出 value |
| hmset … | 批量設(shè)置hash的值 |
| hexists key | 查看哈希表 key 中,給定域 field 是否存在。 |
| hkeys | 列出該hash集合的所有field |
| hvals | 列出該hash集合的所有value |
| hincrby | 為哈希表 key 中的域 field 的值加上增量 increment |
| hsetnx | 將哈希表 key 中的域 field 的值設(shè)置為 value ,當(dāng)且僅當(dāng)域 field 不存在 . |
Redis五大數(shù)據(jù)類型–zset (sorted set)
Redis有序集合zset與普通集合set非常相似,是一個(gè)沒有重復(fù)元素的字符串集合。不同之處是有序集合的每個(gè)成員都關(guān)聯(lián)了一個(gè)評(píng)分(score) ,這個(gè)評(píng)分(score)被用來按照從最低分到最高分的方式排序集合中的成員。集合的成員是唯一的,但是評(píng)分可以是重復(fù)了 。
因?yàn)樵厥怯行虻? 所以你也可以很快的根據(jù)評(píng)分(score)或者次序(position)來獲取一個(gè)范圍的元素。訪問有序集合的中間元素也是非??斓?因此你能夠使用有序集合作為一個(gè)沒有重復(fù)成員的智能列表。
| 命令 | 描述 |
|---|---|
| zadd … | 將一個(gè)或多個(gè) member 元素及其 score 值加入到有序集 key 當(dāng)中。 |
| zrange [WITHSCORES] | 返回有序集 key 中,下標(biāo)在 之間的元素;帶WITHSCORES,可以讓分?jǐn)?shù)一起和值返回到結(jié)果集。 |
| zrangebyscore key min max [withscores] [limit offset count] | 返回有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或 max )的成員。有序集成員按 score 值遞增(從小到大)次序排列。 |
| zrevrangebyscore key max min [withscores] [limit offset count] | 同上,改為從大到小排列。 |
| zincrby | 為元素的score加上增量 |
| zrem | 刪除該集合下,指定值的元素 |
| zcount | 統(tǒng)計(jì)該集合,分?jǐn)?shù)區(qū)間內(nèi)的元素個(gè)數(shù) |
| zrank | 返回該值在集合中的排名,從0開始。 |
Redis事務(wù)–三特性
單獨(dú)的隔離操作
事務(wù)中的所有命令都會(huì)序列化、按順序地執(zhí)行。事務(wù)在執(zhí)行的過程中,不會(huì)被其他客戶端發(fā)送來的命令請(qǐng)求所打斷。
沒有隔離級(jí)別的概念
隊(duì)列中的命令沒有提交之前都不會(huì)實(shí)際的被執(zhí)行,因?yàn)槭聞?wù)提交前任何指令都不會(huì)被實(shí)際執(zhí)行,也就不存在“事務(wù)內(nèi)的查詢要看到事務(wù)里的更新,在事務(wù)外查詢不能看到”這個(gè)讓人萬分頭痛的問題
不保證原子性
Redis同一個(gè)事務(wù)中如果有一條命令執(zhí)行失敗,其后的命令仍然會(huì)被執(zhí)行,沒有回滾