Redis入门与数据类型介绍
一、Redis 概述
Redis 概念
Redis : REmote DIctionary Server(遠(yuǎn)程字典服務(wù)器)。
Redis 是完全開源免費(fèi)的,用C語言編寫的,遵守BSD 協(xié)議,是一個(gè)高性能的(key/value)分布式內(nèi)存數(shù)據(jù)庫,基于內(nèi)存運(yùn)行并支持持久化的NoSQL 數(shù)據(jù)庫,是當(dāng)前最熱門的NoSql 數(shù)據(jù)庫之一,也被人們稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。
Redis 的作用
- 內(nèi)存存儲(chǔ)和持久化:Redis 支持異步將內(nèi)存中的數(shù)據(jù)寫到硬盤上,同時(shí)不影響繼續(xù)服務(wù)
- 取最新N個(gè)數(shù)據(jù)的操作,如:可以將最新的10條評論的ID放在Redis 的List集合里面
- 模擬類似于HttpSession這種需要設(shè)定過期時(shí)間的功能
- 發(fā)布、訂閱消息系統(tǒng)
- 定時(shí)器、計(jì)數(shù)器
Redis 相關(guān)
- Redis 通過單進(jìn)程模型來處理客戶端的請求。對讀寫等事件的響應(yīng)是通過對epoll函數(shù)的包裝來做到的。Redis 的實(shí)際處理速度完全依靠主進(jìn)程的執(zhí)行效率
- Redis 默認(rèn)有16個(gè)數(shù)據(jù)庫,類似數(shù)組下表從零開始,初始默認(rèn)使用零號庫
- 可以使用SELECT 命令切換數(shù)據(jù)庫
- 執(zhí)行DBSIZE 可以查看當(dāng)前數(shù)據(jù)庫的key的數(shù)量
- 執(zhí)行FLUSHDB 清空當(dāng)前庫數(shù)據(jù)
- 執(zhí)行FLUSHALL 清空16 個(gè)數(shù)據(jù)庫中全部數(shù)據(jù)
- Redis 索引都是從零開始
- Redis 默認(rèn)的端口號是6379
Redis 鍵(key)
常用相關(guān)命令:
| Redis DEL 命令 | 該命令用于在 key 存在是刪除 key。 |
| Redis Dump 命令 | 序列化給定 key ,并返回被序列化的值。 |
| Redis EXISTS 命令 | 檢查給定 key 是否存在。 |
| Redis Expire 命令 | seconds 為給定 key 設(shè)置過期時(shí)間。 |
| Redis Expireat 命令 | EXPIREAT 的作用和 EXPIRE 類似,都用于為 key 設(shè)置過期時(shí)間。 不同在于 EXPIREAT 命令接受的時(shí)間參數(shù)是 UNIX 時(shí)間戳(unix timestamp)。 |
| Redis PEXPIREAT 命令 | 設(shè)置 key 的過期時(shí)間億以毫秒計(jì)。 |
| Redis PEXPIREAT 命令 | 設(shè)置 key 過期時(shí)間的時(shí)間戳(unix timestamp) 以毫秒計(jì) |
| Redis Keys 命令 | 查找所有符合給定模式( pattern)的 key 。 |
| Redis Move 命令 | 將當(dāng)前數(shù)據(jù)庫的 key 移動(dòng)到給定的數(shù)據(jù)庫 db 當(dāng)中。 |
| Redis PERSIST 命令 | 移除 key 的過期時(shí)間,key 將持久保持。 |
| Redis Pttl 命令 | 以毫秒為單位返回 key 的剩余的過期時(shí)間。 |
| Redis TTL 命令 | 以秒為單位,返回給定 key 的剩余生存時(shí)間(TTL, time to live)。 |
| Redis RANDOMKEY 命令 | 從當(dāng)前數(shù)據(jù)庫中隨機(jī)返回一個(gè) key 。 |
| Redis Rename 命令 | 修改 key 的名稱 |
| Redis Renamenx 命令 | 僅當(dāng) newkey 不存在時(shí),將 key 改名為 newkey 。 |
| Redis Type 命令 | 返回 key 所儲(chǔ)存的值的類型。 |
二、Redis 五大數(shù)據(jù)類型
String
string 是Redis 最基本的類型,你可以理解成與Memcached 一模一樣的類型,一個(gè)key對應(yīng)一個(gè)value
string類型是二進(jìn)制安全的。意思是Redis 的string 可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對象
string 類型是Redis 最基本的數(shù)據(jù)類型,一個(gè)Redis 中字符串value最多可以是512M
常用命令:
| Redis SET 命令 | 設(shè)置指定 key 的值 |
| Redis Get 命令 | 獲取指定 key 的值。 |
| Redis Getrange 命令 | 返回 key 中字符串值的子字符 |
| Redis Getset 命令 | 將給定 key 的值設(shè)為 value ,并返回 key 的舊值(old value)。 |
| Redis Getbit 命令 | 對 key 所儲(chǔ)存的字符串值,獲取指定偏移量上的位(bit)。 |
| Redis Mget 命令 | 獲取所有(一個(gè)或多個(gè))給定 key 的值。 |
| Redis Setbit 命令 | 對 key 所儲(chǔ)存的字符串值,設(shè)置或清除指定偏移量上的位(bit)。 |
| Redis Setex 命令 | 將值 value 關(guān)聯(lián)到 key ,并將 key 的過期時(shí)間設(shè)為 seconds (以秒為單位)。 |
| Redis Setnx 命令 | 只有在 key 不存在時(shí)設(shè)置 key 的值。 |
| Redis Setrange 命令 | 用 value 參數(shù)覆寫給定 key 所儲(chǔ)存的字符串值,從偏移量 offset 開始。 |
| Redis Strlen 命令 | 返回 key 所儲(chǔ)存的字符串值的長度。 |
| Redis Mset 命令 | 同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對。 |
| Redis Msetnx 命令 | 同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對,當(dāng)且僅當(dāng)所有給定 key 都不存在。 |
| Redis Psetex 命令 | 這個(gè)命令和 SETEX 命令相似,但它以毫秒為單位設(shè)置 key 的生存時(shí)間,而不是像 SETEX 命令那樣,以秒為單位。 |
| Redis Incr 命令 | 將 key 中儲(chǔ)存的數(shù)字值增一。 |
| Redis Incrby 命令 | 將 key 所儲(chǔ)存的值加上給定的增量值(increment) 。 |
| Redis Incrbyfloat 命令 | 將 key 所儲(chǔ)存的值加上給定的浮點(diǎn)增量值(increment) 。 |
| Redis Decr 命令 | 將 key 中儲(chǔ)存的數(shù)字值減一。 |
| Redis Decrby 命令 | key 所儲(chǔ)存的值減去給定的減量值(decrement) 。 |
| Redis Append 命令 | 如果 key 已經(jīng)存在并且是一個(gè)字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。 |
List
Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)。
它的底層是個(gè)鏈表。
常用命令:
| Redis Blpop 命令 | 移出并獲取列表的第一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 |
| Redis Brpop 命令 | 移出并獲取列表的最后一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 |
| Redis Brpoplpush 命令 | 從列表中彈出一個(gè)值,將彈出的元素插入到另外一個(gè)列表中并返回它; 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 |
| Redis Lindex 命令 | 通過索引獲取列表中的元素 |
| Redis Linsert 命令 | 在列表的元素前或者后插入元素 |
| Redis Llen 命令 | 獲取列表長度 |
| Redis Lpop 命令 | 移出并獲取列表的第一個(gè)元素 |
| Redis Lpush 命令 | 將一個(gè)或多個(gè)值插入到列表頭部 |
| Redis Lpushx 命令 | 將一個(gè)或多個(gè)值插入到已存在的列表頭部 |
| Redis Lrange 命令 | 獲取列表指定范圍內(nèi)的元素 |
| Redis Lrem 命令 | 移除列表元素 |
| Redis Lset 命令 | 通過索引設(shè)置列表元素的值 |
| Redis Ltrim 命令 | 對一個(gè)列表進(jìn)行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。 |
| Redis Rpop 命令 | 移除并獲取列表最后一個(gè)元素 |
| Redis Rpoplpush 命令 | 移除列表的最后一個(gè)元素,并將該元素添加到另一個(gè)列表并返回 |
| Redis Rpush 命令 | 在列表中添加一個(gè)或多個(gè)值 |
| Redis Rpushx 命令 | 為已存在的列表添加值 |
Set
Redis 的Set 是string 類型的無序集合。它是通過HashTable 實(shí)現(xiàn)實(shí)現(xiàn)的
常用命令:
| Redis Sadd 命令 | 向集合添加一個(gè)或多個(gè)成員 |
| Redis Scard 命令 | 獲取集合的成員數(shù) |
| Redis Sdiff 命令 | 返回給定所有集合的差集 |
| Redis Sdiffstore 命令 | 返回給定所有集合的差集并存儲(chǔ)在 destination 中 |
| Redis Sinter 命令 | 返回給定所有集合的交集 |
| Redis Sinterstore 命令 | 返回給定所有集合的交集并存儲(chǔ)在 destination 中 |
| Redis Sismember 命令 | 判斷 member 元素是否是集合 key 的成員 |
| Redis Smembers 命令 | 返回集合中的所有成員 |
| Redis Smove 命令 | 將 member 元素從 source 集合移動(dòng)到 destination 集合 |
| Redis Spop 命令 | 移除并返回集合中的一個(gè)隨機(jī)元素 |
| Redis Srandmember 命令 | 返回集合中一個(gè)或多個(gè)隨機(jī)數(shù) |
| Redis Srem 命令 | 移除集合中一個(gè)或多個(gè)成員 |
| Redis Sunion 命令 | 返回所有給定集合的并集 |
| Redis Sunionstore 命令 | 所有給定集合的并集存儲(chǔ)在 destination 集合中 |
| Redis Sscan 命令 | 迭代集合中的元素 |
Hash
Redis hash 是一個(gè)鍵值對集合。
Redis hash是一個(gè)string類型的field和value的映射表,hash特別適合用于存儲(chǔ)對象。
常用命令:
| Redis Hdel 命令 | 刪除一個(gè)或多個(gè)哈希表字段 |
| Redis Hexists 命令 | 查看哈希表 key 中,指定的字段是否存在。 |
| Redis Hget 命令 | 獲取存儲(chǔ)在哈希表中指定字段的值/td> |
| Redis Hgetall 命令 | 獲取在哈希表中指定 key 的所有字段和值 |
| Redis Hincrby 命令 | 為哈希表 key 中的指定字段的整數(shù)值加上增量 increment 。 |
| Redis Hincrbyfloat 命令 | 為哈希表 key 中的指定字段的浮點(diǎn)數(shù)值加上增量 increment 。 |
| Redis Hkeys 命令 | 獲取所有哈希表中的字段 |
| Redis Hlen 命令 | 獲取哈希表中字段的數(shù)量 |
| Redis Hmget 命令 | 獲取所有給定字段的值 |
| Redis Hmset 命令 | 同時(shí)將多個(gè) field-value (域-值)對設(shè)置到哈希表 key 中。 |
| Redis Hset 命令 | 將哈希表 key 中的字段 field 的值設(shè)為 value 。 |
| Redis Hsetnx 命令 | 只有在字段 field 不存在時(shí),設(shè)置哈希表字段的值。 |
| Redis Hvals 命令 | 獲取哈希表中所有值 |
Zset
zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string 類型元素的集合,且不允許重復(fù)的成員。
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double 類型的分?jǐn)?shù)。
Redis 正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。
常用命令:
| Redis Zadd 命令 | 向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù) |
| Redis Zcard 命令 | 獲取有序集合的成員數(shù) |
| Redis Zcount 命令 | 計(jì)算在有序集合中指定區(qū)間分?jǐn)?shù)的成員數(shù) |
| Redis Zincrby 命令 | 有序集合中對指定成員的分?jǐn)?shù)加上增量 increment |
| Redis Zinterstore 命令 | 計(jì)算給定的一個(gè)或多個(gè)有序集的交集并將結(jié)果集存儲(chǔ)在新的有序集合 key 中 |
| Redis Zlexcount 命令 | 在有序集合中計(jì)算指定字典區(qū)間內(nèi)成員數(shù)量 |
| Redis Zrange 命令 | 通過索引區(qū)間返回有序集合成指定區(qū)間內(nèi)的成員 |
| Redis Zrangebylex 命令 | 通過字典區(qū)間返回有序集合的成員 |
| Redis Zrangebyscore 命令 | 通過分?jǐn)?shù)返回有序集合指定區(qū)間內(nèi)的成員 |
| Redis Zrank 命令 | 返回有序集合中指定成員的索引 |
| Redis Zrem 命令 | 移除有序集合中的一個(gè)或多個(gè)成員 |
| Redis Zremrangebylex 命令 | 移除有序集合中給定的字典區(qū)間的所有成員 |
| Redis Zremrangebyrank 命令 | 移除有序集合中給定的排名區(qū)間的所有成員 |
| Redis Zremrangebyscore 命令 | 移除有序集合中給定的分?jǐn)?shù)區(qū)間的所有成員 |
| Redis Zrevrange 命令 | 返回有序集中指定區(qū)間內(nèi)的成員,通過索引,分?jǐn)?shù)從高到底 |
| Redis Zrevrangebyscore 命令 | 返回有序集中指定分?jǐn)?shù)區(qū)間內(nèi)的成員,分?jǐn)?shù)從高到低排序 |
| Redis Zrevrank 命令 | 返回有序集合中指定成員的排名,有序集成員按分?jǐn)?shù)值遞減(從大到小)排序 |
| Redis Zscore 命令 | 返回有序集中,成員的分?jǐn)?shù)值 |
| Redis Zunionstore 命令 | 計(jì)算給定的一個(gè)或多個(gè)有序集的并集,并存儲(chǔ)在新的 key 中 |
| Redis Zscan 命令 | 迭代有序集合中的元素(包括元素成員和元素分值) |
參考資料:
http://www.redis.net.cn/order/
總結(jié)
以上是生活随笔為你收集整理的Redis入门与数据类型介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应届生报考部队文职需要什么资料
- 下一篇: 1950年解放军副师长遇难电影叫什么