新聞中心
Redis 基礎應用(一)
==============================================================================
概述:
Redis的相關介紹,功能,優(yōu)勢及于其他key-value數(shù)據(jù)庫的對比;
Redis的安裝及程序環(huán)境;
命令行客戶端命令
Redis 的數(shù)據(jù)結(jié)構(gòu)
==============================================================================
Redis簡介
1.簡介
★Redis
REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的 key-value存儲系統(tǒng)。
Redis是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。
它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務器,因為值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。
☉REmote DIctionary Server(Redis)
內(nèi)存存儲;
持久化;
主從;
Cluster
☉Redis 與其他 key - value 緩存產(chǎn)品有以下三個特點:
Redis支持數(shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加載進行使用。
Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。
Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
2.功能
★支持的功能如下:
☉數(shù)據(jù)結(jié)構(gòu)服務器:
值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。
☉單進程
CPU 并非瓶頸
☉持久化機制
snapshoting
AOF
☉Replication
主從:
主:rw
從:read-only
3.優(yōu)勢
★優(yōu)勢
性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
豐富的數(shù)據(jù)類型– Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作
原子 – Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執(zhí)行。
豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。
4.Redis與其他key-value存儲有什么不同
★區(qū)別:
Redis有著更為復雜的數(shù)據(jù)結(jié)構(gòu)并且提供對他們的原子性操作,這是一個不同于其他數(shù)據(jù)庫的進化路徑。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時對程序員透明,無需進行額外的抽象。
Redis運行在內(nèi)存中但是可以持久化到磁盤,所以在對不同數(shù)據(jù)集進行高速讀寫時需要權(quán)衡內(nèi)存,因為數(shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫方面的另一個優(yōu)點是,相比在磁盤上相同的復雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來非常簡單,這樣Redis可以做很多內(nèi)部復雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因為他們并不需要進行隨機訪問。
★和memcached的區(qū)別
Redis不僅僅支持簡單的k/v類型的數(shù)據(jù),同時還提供list,set,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。memcache僅支持字符串型值(流式化數(shù)據(jù))
Redis為單線程,Memcached為多線程,但性能上相當;
Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
Redis支持數(shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時候可以再次加載進行使用。(在Redis中,并不是所有的數(shù)據(jù)都一直存儲在內(nèi)存中的。這是和Memcached相比一個大的區(qū)別)
應用場景不一樣:Redis出來作為NoSQL數(shù)據(jù)庫使用外,還能用做消息隊列、數(shù)據(jù)堆棧和數(shù)據(jù)緩存等;Memcached適合于緩存SQL語句、數(shù)據(jù)集、用戶臨時性數(shù)據(jù)、延遲查詢數(shù)據(jù)和session等。
★redis、memcache、mongoDB 對比
從以下幾個維度,對redis、memcache、mongoDB 做了對比,歡迎拍磚
☉性能
都比較高,性能對我們來說應該都不是瓶頸
總體來講,TPS方面redis和memcache差不多,要大于mongodb
☉操作的便利性
memcache數(shù)據(jù)結(jié)構(gòu)單一
redis豐富一些,數(shù)據(jù)操作方面,redis更好一些,較少的網(wǎng)絡IO次數(shù)
mongodb支持豐富的數(shù)據(jù)表達,索引,最類似關系型數(shù)據(jù)庫,支持的查詢語言非常豐富
☉內(nèi)存空間的大小和數(shù)據(jù)量的大小
redis在2.0版本后增加了自己的VM特性,突破物理內(nèi)存的限制;可以對key value設置過期時間(類似memcache)
memcache可以修改大可用內(nèi)存,采用LRU算法
mongoDB適合大數(shù)據(jù)量的存儲,依賴操作系統(tǒng)VM做內(nèi)存管理,吃內(nèi)存也比較厲害,服務不要和別的服務在一起
☉可用性(單點問題)
對于單點問題
redis,依賴客戶端來實現(xiàn)分布式讀寫;主從復制時,每次從節(jié)點重新連接主節(jié)點都要依賴整個快照,無增量復制,因性能和效率問題,
所以單點問題比較復雜;不支持自動sharding,需要依賴程序設定一致hash 機制。
一種替代方案是,不用redis本身的復制機制,采用自己做主動復制(多份存儲),或者改成增量復制的方式(需要自己實現(xiàn)),一致性問題和性能的權(quán)衡Memcache本身沒有數(shù)據(jù)冗余機制,也沒必要;對于故障預防,采用依賴成熟的hash或者環(huán)狀的算法,解決單點故障引起的抖動問題。
mongoDB支持master-slave,replicaset(內(nèi)部采用paxos選舉算法,自動故障恢復),auto sharding機制,對客戶端屏蔽了故障轉(zhuǎn)移和切分機制。
☉可靠性(持久化)
對于數(shù)據(jù)持久化和數(shù)據(jù)恢復,
redis支持(快照、AOF):依賴快照進行持久化,aof增強了可靠性的同時,對性能有所影響
memcache不支持,通常用在做緩存,提升性能;
MongoDB從1.8版本開始采用binlog方式支持持久化的可靠性
☉數(shù)據(jù)一致性(事務支持)
Memcache 在并發(fā)場景下,用cas保證一致性
redis事務支持比較弱,只能保證事務中的每個操作連續(xù)執(zhí)行
mongoDB不支持事務
☉數(shù)據(jù)分析
mongoDB內(nèi)置了數(shù)據(jù)分析的功能(mapreduce),其他不支持
☉應用場景
redis:數(shù)據(jù)量較小的更性能操作和運算上
memcache:用于在動態(tài)系統(tǒng)中減少數(shù)據(jù)庫負載,提升性能;做緩存,提高性能(適合讀多寫少,對于數(shù)據(jù)量比較大,可以采用sharding)
MongoDB:主要解決海量數(shù)據(jù)的訪問效率問題
Redis安裝及數(shù)據(jù)結(jié)構(gòu)
1.安裝及程序環(huán)境
★安裝方法:
編譯安裝
rpm包安裝
★程序環(huán)境
☉配置文件
/etc/redis.conf
/etc/redis-sentinel.conf
☉主程序
/usr/bin/redis-server
/usr/bin/redis-sentinel
監(jiān)聽端口:6379/tcp
☉命令行客戶端
/usr/bin/redis-cli
演示:
1.安裝程序包
# 配置好epel倉庫 [root@centos7 ~]# yum install redis2.程序環(huán)境如下:
[root@centos7 ~]# rpm -ql redis /etc/logrotate.d/redis /etc/redis-sentinel.conf /etc/redis.conf /etc/systemd/system/redis-sentinel.service.d /etc/systemd/system/redis-sentinel.service.d/limit.conf /etc/systemd/system/redis.service.d /etc/systemd/system/redis.service.d/limit.conf /usr/bin/redis-benchmark /usr/bin/redis-check-aof /usr/bin/redis-check-rdb /usr/bin/redis-cli /usr/bin/redis-sentinel /usr/bin/redis-server /usr/bin/redis-shutdown /usr/lib/systemd/system/redis-sentinel.service /usr/lib/systemd/system/redis.service /usr/lib/tmpfiles.d/redis.conf /usr/share/doc/redis-3.2.3 /usr/share/doc/redis-3.2.3/00-RELEASENOTES /usr/share/doc/redis-3.2.3/BUGS /usr/share/doc/redis-3.2.3/CONTRIBUTING /usr/share/doc/redis-3.2.3/MANIFESTO /usr/share/doc/redis-3.2.3/README.md /usr/share/licenses/redis-3.2.3 /usr/share/licenses/redis-3.2.3/COPYING /var/lib/redis /var/log/redis /var/run/redis3.配置文件/etc/redis.conf 如下:
# 備份 [root@centos7 ~]# cp /etc/redis.conf{,.bak} [root@centos7 ~]# grep "^##" /etc/redis.conf ################################## INCLUDES ################################### ################################## NETWORK ##################################### ################################# GENERAL ##################################### ################################ SNAPSHOTTING ################################ ################################# REPLICATION ################################# ################################## SECURITY ################################### ################################### LIMITS #################################### ############################## APPEND ONLY MODE ############################### ################################ LUA SCRIPTING ############################### ################################ REDIS CLUSTER ############################### ################################## SLOW LOG ################################### ################################ LATENCY MONITOR ############################## ############################# EVENT NOTIFICATION ############################## ############################### ADVANCED CONFIG ############################### [root@centos7 ~]# vim /etc/redis.conf bind 0.0.0.0 # 修改綁定的端口 # 啟動 redis,查看堅挺的端口 6379 [root@centos7 ~]# systemctl start redis [root@centos7 ~]# ss -tnlp |grep "redis" LISTEN 0 128 *:6379 *:* users:(("redis-server",pid=3840,fd=4))3.命令行客戶端命令
★redis-cli
☉語法:
redis-cli [OPTIONS] [cmd [arg [arg ...]]]
☉常用選項:
-h
Server hostname (default: 127.0.0.1). //主機地址 -p
Server port (default: 6379). //端口 -a
Password to use when connecting to the server. //密碼
演示:
1.本地連接,直接運行 redis-cli 命令即可
[root@centos7 ~]# redis-cli 127.0.0.1:6379> ping PONG2.遠程連接,指明要連接的主機,端口和密碼即可
[root@centos7 ~]# redis-cli -h 192.168.1.112 192.168.1.112:6379> ping PONG 192.168.1.112:6379> help # 獲取幫助 redis-cli 3.2.3 To get help about Redis commands type: "help @Redis:k/v
1.k/v 和 group
★k/v
key:直接ASCII字符串;
value(數(shù)據(jù)結(jié)構(gòu)):string,lists,hashes,set,sored sets,bltmaps,hyperloglog
★group
@string,@generic,@list @...
2.string(字符串)
★作用:
Redis 字符串數(shù)據(jù)類型的相關命令用于管理 redis 字符串值;
☉基本語法:
127.0.0.1:6379>COMMAND KEY_NAME
演示:
192.168.1.112:6379> SET count 1 OK 192.168.1.112:6379> GET count "1" 192.168.1.112:6379> INCR count (integer) 2 192.168.1.112:6379> INCR count (integer) 3 192.168.1.112:6379> INCR count (integer) 4 192.168.1.112:6379> INCR count (integer) 5 192.168.1.112:6379> DECR count (integer) 4 192.168.1.112:6379> DECR count (integer) 3 192.168.1.112:6379> DECR count (integer) 2 192.168.1.112:6379> DECR count (integer) 1下表列出了常用的 redis 字符串命令:
序號 | 命令及描述 |
---|---|
1 | SET key value 設置指定 key 的值 |
2 | GET key 獲取指定 key 的值。 |
3 | GETRANGE key start end 返回 key 中字符串值的子字符 |
4 | GETSET key value 將給定 key 的值設為 value ,并返回 key 的舊值(old value)。 |
5 | GETBIT key offset 對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。 |
6 | MGET key1 [key2..] 獲取所有(一個或多個)給定 key 的值。 |
7 | SETBIT key offset value 對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit)。 |
8 | SETEX key seconds value 將值 value 關聯(lián)到 key ,并將 key 的過期時間設為 seconds (以秒為單位)。 |
9 | SETNX key value 只有在 key 不存在時設置 key 的值。 |
10 | SETRANGE key offset value 用 value 參數(shù)覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始。 |
11 | STRLEN key 返回 key 所儲存的字符串值的長度。 |
12 | MSET key value [key value ...] 同時設置一個或多個 key-value 對。 |
13 | MSETNX key value [key value ...] 同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 |
14 | PSETEX key milliseconds value 這個命令和 SETEX 命令相似,但它以毫秒為單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。 |
15 | INCR key 將 key 中儲存的數(shù)字值增一。 |
16 | INCRBY key increment 將 key 所儲存的值加上給定的增量值(increment) 。 |
17 | INCRBYFLOAT key increment 將 key 所儲存的值加上給定的浮點增量值(increment) 。 |
18 | DECR key 將 key 中儲存的數(shù)字值減一。 |
19 | DECRBY key decrement key 所儲存的值減去給定的減量值(decrement) 。 |
20 | APPEND key value 如果 key 已經(jīng)存在并且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。 |
3.list(列表)
★作用
Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊)
一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。
演示:
192.168.1.112:6379> RPUSH mylist "mon" (integer) 1 192.168.1.112:6379> LINDEX mylist 0 "mon" 192.168.1.112:6379> RPUSH mylist "tun" (integer) 2 192.168.1.112:6379> LPUSH mylist "sun" (integer) 3 192.168.1.112:6379> LINDEX mylist 0 "sun" 192.168.1.112:6379> LINDEX mylist 0 "sun" 192.168.1.112:6379> LINDEX mylist 1 "mon" 192.168.1.112:6379> LINDEX mylist 2 "tun" 192.168.1.112:6379> RPOP mylist "tun" 192.168.1.112:6379> LLEN mylist (integer) 2下表列出了列表相關的基本命令:
序號 | 命令及描述 |
---|---|
1 | BLPOP key1 [key2 ] timeout 移出并獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。 |
2 | BRPOP key1 [key2 ] timeout 移出并獲取列表的最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。 |
3 | BRPOPLPUSH source destination timeout 從列表中彈出一個值,將彈出的元素插入到另外一個列表中并返回它; 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。 |
4 | LINDEX key index 通過索引獲取列表中的元素 |
5 | LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素 |
6 | LLEN key 獲取列表長度 |
7 | LPOP key 移出并獲取列表的第一個元素 |
8 | LPUSH key value1 [value2] 將一個或多個值插入到列表頭部 |
9 | LPUSHX key value 將一個或多個值插入到已存在的列表頭部 |
10 | LRANGE key start stop 獲取列表指定范圍內(nèi)的元素 |
11 | LREM key count value 移除列表元素 |
12 | LSET key index value 通過索引設置列表元素的值 |
13 | LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。 |
14 | RPOP key 移除并獲取列表最后一個元素 |
15 | RPOPLPUSH source destination 移除列表的最后一個元素,并將該元素添加到另一個列表并返回 |
16 | RPUSH key value1 [value2] 在列表中添加一個或多個值 |
17 | RPUSHX key value 為已存在的列表添加值 |
4.set(集合)
★作用:
Redis的Set是string類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復的數(shù)據(jù)。
Redis 中 集合是通過哈希表實現(xiàn)的,所以添加,刪除,查找的復雜度都是O(1)。
集合中大的成員數(shù)為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
演示:
192.168.1.112:6379> SADD s1 'a' 'b' 'c' (integer) 3 192.168.1.112:6379> SMEMBERS s1 1) "c" 2) "b" 3) "a" 192.168.1.112:6379> SISMEMBER s1 'a' (integer) 1 192.168.1.112:6379> SISMEMBER s1 'c' (integer) 1 192.168.1.112:6379> SISMEMBER s1 'd' (integer) 0 192.168.1.112:6379> SADD s2 'a' 'c' 'd' 'f' (integer) 4 192.168.1.112:6379> SINTER s1 s2 1) "c" 2) "a" 192.168.1.112:6379> SUNION s1 s2 1) "f" 2) "a" 3) "b" 4) "d" 5) "c"下表列出了 Redis 集合基本命令:
序號 | 命令及描述 |
---|---|
1 | SADD key member1 [member2] 向集合添加一個或多個成員 |
2 | SCARD key 獲取集合的成員數(shù) |
3 | SDIFF key1 [key2] 返回給定所有集合的差集 |
4 | SDIFFSTORE destination key1 [key2] 返回給定所有集合的差集并存儲在 destination 中 |
5 | SINTER key1 [key2] 返回給定所有集合的交集 |
6 | SINTERSTORE destination key1 [key2] 返回給定所有集合的交集并存儲在 destination 中 |
7 | SISMEMBER key member 判斷 member 元素是否是集合 key 的成員 |
8 | SMEMBERS key 返回集合中的所有成員 |
9 | SMOVE source destination member 將 member 元素從 source 集合移動到 destination 集合 |
10 | SPOP key 移除并返回集合中的一個隨機元素 |
11 | SRANDMEMBER key [count] 返回集合中一個或多個隨機數(shù) |
12 | SREM key member1 [member2] 移除集合中一個或多個成員 |
13 | SUNION key1 [key2] 返回所有給定集合的并集 |
14 | SUNIONSTORE destination key1 [key2] 所有給定集合的并集存儲在 destination 集合中 |
15 | SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素 |
5.hash(哈希)
★作用:
Redis hash 是一個string類型的field和value的映射表,hash特別適合用于存儲對象。
Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億)。
演示:
192.168.1.112:6379> HSET h2 name taotao (integer) 1 192.168.1.112:6379> HSET h2 age 25 (integer) 1 192.168.1.112:6379> HGETALL h2 1) "name" 2) "taotao" 3) "age" 4) "25" 192.168.1.112:6379> HKEYS h2 1) "name" 2) "age" 192.168.1.112:6379> HVALS h2 1) "taotao" 2) "25" 192.168.1.112:6379> HGET h2 name "taotao" 192.168.1.112:6379> HGET h2 age "25"下表列出了 redis hash 基本的相關命令:
序號 | 命令及描述 |
---|---|
1 | HDEL key field2 [field2] 刪除一個或多個哈希表字段 |
2 | HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。 |
3 | HGET key field 獲取存儲在哈希表中指定字段的值。 |
4 | HGETALL key 獲取在哈希表中指定 key 的所有字段和值 |
5 | HINCRBY key field increment 為哈希表 key 中的指定字段的整數(shù)值加上增量 increment 。 |
6 | HINCRBYFLOAT key field increment 為哈希表 key 中的指定字段的浮點數(shù)值加上增量 increment 。 |
7 | HKEYS key 獲取所有哈希表中的字段 |
8 | HLEN key 獲取哈希表中字段的數(shù)量 |
9 | HMGET key field1 [field2] 獲取所有給定字段的值 |
10 | HMSET key field1 value1 [field2 value2 ] 同時將多個 field-value (域-值)對設置到哈希表 key 中。 |
11 | HSET key field value 將哈希表 key 中的字段 field 的值設為 value 。 |
12 | HSETNX key field value 只有在字段 field 不存在時,設置哈希表字段的值。 |
13 | HVALS key 獲取哈希表中所有值 |
14 | HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的鍵值對。 |
6.sorted set(有序集合)
★作用:
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。
不同的是每個元素都會關聯(lián)一個double類型的分數(shù)。redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(shù)(score)卻可以重復。
集合是通過哈希表實現(xiàn)的,所以添加,刪除,查找的復雜度都是O(1)。 集合中大的成員數(shù)為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
下表列出了 redis 有序集合的基本命令:
序號 | 命令及描述 |
---|---|
1 | ZADD key score1 member1 [score2 member2] 向有序集合添加一個或多個成員,或者更新已存在成員的分數(shù) |
2 | ZCARD key 獲取有序集合的成員數(shù) |
3 | ZCOUNT key min max 計算在有序集合中指定區(qū)間分數(shù)的成員數(shù) |
4 | ZINCRBY key increment member 有序集合中對指定成員的分數(shù)加上增量 increment |
5 | ZINTERSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的交集并將結(jié)果集存儲在新的有序集合 key 中 |
6 | ZLEXCOUNT key min max 在有序集合中計算指定字典區(qū)間內(nèi)成員數(shù)量 |
7 | ZRANGE key start stop [WITHSCORES] 通過索引區(qū)間返回有序集合成指定區(qū)間內(nèi)的成員 |
8 | ZRANGEBYLEX key min max [LIMIT offset count] 通過字典區(qū)間返回有序集合的成員 |
9 | ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通過分數(shù)返回有序集合指定區(qū)間內(nèi)的成員 |
10 | ZRANK key member 返回有序集合中指定成員的索引 |
11 | ZREM key member [member ...] 移除有序集合中的一個或多個成員 |
12 | ZREMRANGEBYLEX key min max 移除有序集合中給定的字典區(qū)間的所有成員 |
13 | ZREMRANGEBYRANK key start stop 移除有序集合中給定的排名區(qū)間的所有成員 |
14 | ZREMRANGEBYSCORE key min max 移除有序集合中給定的分數(shù)區(qū)間的所有成員 |
15 | ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定區(qū)間內(nèi)的成員,通過索引,分數(shù)從高到底 |
16 | ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分數(shù)區(qū)間內(nèi)的成員,分數(shù)從高到低排序 |
17 | ZREVRANK key member 返回有序集合中指定成員的排名,有序集成員按分數(shù)值遞減(從大到小)排序 |
18 | ZSCORE key member 返回有序集中,成員的分數(shù)值 |
19 | ZUNIONSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的并集,并存儲在新的 key 中 |
20 | ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值) |
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)頁題目:Redis基礎應用-創(chuàng)新互聯(lián)
URL地址:http://fisionsoft.com.cn/article/dpegps.html