小丸子學Redis系列之——Data types(一)
Redis相比其他key-value型別的資料庫來說有其特有的優勢,其中兩點比較突出的就是支援資料持久化和支援各種複雜的資料結構。
本文就來簡單介紹下Redis 3.0支援的資料型別,以及各個資料型別支援的一些常見操作,所以演示都以redis-cli工具來演示。
目前Redis 3.0支援的資料型別有:
1.strings——Binary-safe strings
2.Lists——集合中的字串元素順序是由元素插入的順序決定的,這種型別我們通常稱之為連結串列
3.Sets——集合中的字串元素是唯一的且無序的
4.Sorted sets——類似於Sets型別但是集合中每個元素都會關聯一個浮點數(稱之為score),並且按照元素對應的score進行排序
5.Hashes——該型別被對映成一組欄位和欄位值組成,非常適合儲存物件
6.Bit arrays (or simply bitmaps)——該型別主要針對bit陣列的操作
7.HyperLogLogs——一種機率型別的資料結構,主要用於評估集合的基數
Reis Strings
1.set和get命令——設定和獲取一個string value
1.1 基本用法
[rdsusr01@vm1 ~]$ redis-cli -h 192.168.157.128 -p 16379
192.168.157.128:16379> set name sohoboy
OK
192.168.157.128:16379> get name
"sohoboy"
192.168.157.128:16379> set name kickboy
OK
192.168.157.128:16379> get name
"kickboy"
注:set命令會覆蓋已存在的key中的value,即使這個key用一個non-string value關聯。
1.2 set命令的引數
set key nx:key如果已存在,那麼設定key的動作將失敗
set key xx:key如果已存在,那麼設定key的動作將成功
192.168.157.128:16379> get name
"kickboy"
192.168.157.128:16379> set name oldboy nx
(nil)
192.168.157.128:16379> get name
"kickboy"
192.168.157.128:16379> set name oldboy xx
OK
192.168.157.128:16379> get name
"oldboy"
2.incr命令——將string value解析成一個整數,然後在此基礎上加1
類似的命令還有decr,increby,decrby,incr和decr功能相反,*by的增加/減少的數量可以指定
192.168.157.128:16379> set count 3
OK
192.168.157.128:16379> incr count
(integer) 4
192.168.157.128:16379> incr count
(integer) 5
192.168.157.128:16379> get count
"5"
192.168.157.128:16379> incrby count 25
(integer) 30
192.168.157.128:16379> get count
"30"
192.168.157.128:16379> decr count
(integer) 29
192.168.157.128:16379> get count
"29"
192.168.157.128:16379> decrby count 9
(integer) 20
192.168.157.128:16379> get count
"20"
3.mset和mget命令——一次性設定和獲取多個key的value
192.168.157.128:16379> mset db1 oracle db2 mysql db3 mongodb db4 redis
OK
192.168.157.128:16379> mget db1 db2 db3 db4
1) "oracle"
2) "mysql"
3) "mongodb"
4) "redis"
4.通用命令——exists,del,type,這些命令不侷限於Redis String型別的key
exists:指定的key如果存在則返回1,不存在返回0
del:刪除一個key以及key關聯的value
type:返回key中儲存的value的型別
192.168.157.128:16379> exists name
(integer) 1
192.168.157.128:16379> type name
string
192.168.157.128:16379> del name
(integer) 1
192.168.157.128:16379> exists name
(integer) 0
5.expire和ttl命令——設定key的過期時間以及檢查key的存活時間,單位是秒
192.168.157.128:16379> set name sohoboy
OK
192.168.157.128:16379> expire name 10
(integer) 1
192.168.157.128:16379> ttl name
(integer) 7
192.168.157.128:16379> ttl name
(integer) 3
192.168.157.128:16379> ttl name
(integer) -2
192.168.157.128:16379> get name
(nil)
6.pexpire和pttl命令——設定key的過期時間以及檢查key的存活時間,單位是毫秒
192.168.157.128:16379> set name oldboy
OK
192.168.157.128:16379> pexpire name 9855
(integer) 1
192.168.157.128:16379> pttl name
(integer) 7113
192.168.157.128:16379> pttl name
(integer) 5096
192.168.157.128:16379> pttl name
(integer) 3551
注:這裡在補充幾個相關的命令和引數
persist:去掉設定了過期時間的key,使其持久化
set key ex:設定key的超時時間,單位是秒
set key px:設定key的超時時間,單位是毫秒
192.168.157.128:16379> set name oldboy ex 11
OK
192.168.157.128:16379> ttl name
(integer) 8
192.168.157.128:16379> ttl name
(integer) 5
192.168.157.128:16379> set name oldboy px 8933
OK
192.168.157.128:16379> pttl name
(integer) 5175
192.168.157.128:16379> pttl name
(integer) 4018
192.168.157.128:16379> persist name
(integer) 1
7.getrange和setrange命令——返回key的子串和重寫key的子串
192.168.157.128:16379> set slogan "I am a handsome man"
OK
192.168.157.128:16379> get slogan
"I am a handsome man"
192.168.157.128:16379> getrange slogan 7 -5
"handsome"
192.168.157.128:16379> getrange slogan 30 -2
""
192.168.157.128:16379> getrange slogan 0 100
"I am a handsome man"
192.168.157.128:16379> setrange slogan -3 woman
(error) ERR offset is out of range
192.168.157.128:16379> get slogan
"I am a handsome man"
192.168.157.128:16379> setrange slogan 7 glamour
(integer) 19
192.168.157.128:16379> get slogan
"I am a glamoure man"
192.168.157.128:16379> setrange slogan 30 yes
(integer) 33
192.168.157.128:16379> get slogan
"I am a glamoure man\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00yes"
8.getbit和setbit命令——獲取和設定key中儲存的string value對應的offset的bit
192.168.157.128:16379> set word a
OK
192.168.157.128:16379> getbit word 1
(integer) 1
192.168.157.128:16379> getbit word 0
(integer) 0
192.168.157.128:16379> getbit word 3
(integer) 0
192.168.157.128:16379> getbit word 7
(integer) 1
192.168.157.128:16379> getbit word 8
(integer) 0
192.168.157.128:16379> bitcount word
(integer) 3
192.168.157.128:16379> setbit word 3 1
(integer) 0
192.168.157.128:16379> getbit word 3
(integer) 1
192.168.157.128:16379> setbit word 3 0
(integer) 1
注:字元"a"對應的二進位制位是"1100001"
至此關於Redis Strings型別的key的一些常用操作介紹到這,下面的文章會陸續介紹其他資料型別。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20801486/viewspace-1872810/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小丸子學Redis系列之——安裝RedisRedis
- 小丸子學MongoDB系列之——安裝MongoDBMongoDB
- 小丸子學Docker系列之——實戰DockerfileDocker
- 小丸子學MongoDB系列之——部署MongoDB副本集MongoDB
- 小丸子學Hadoop系列之——部署Hbase叢集Hadoop
- 小丸子學MongoDB系列之——部署Replica Set+Sharded ClusterMongoDB
- 小丸子學Hadoop系列之——部署Hadoop叢集Hadoop
- 小丸子學MongoDB系列之——副本集Auto-FailoverMongoDBAI
- 小丸子學Hadoop系列之——hbase備份與恢復Hadoop
- 小丸子學Oracle 12c系列之——Oracle Pluggable DatabaseOracleDatabase
- 小丸子學Docker系列之——安裝Docker及基本命令的使用Docker
- 小丸子學Kubernetes系列之——Kubernetes安裝與使用
- 小丸子學MongoDB系列之——副本集在容災環境中的故障演練MongoDB
- [Redis 系列]redis 學習二Redis
- 【Redis 系列】redis 學習二Redis
- 跟我一起學Redis之Redis概述Redis
- 【翻譯】蘋果官網的命名規範之 Naming Properties and Data Types蘋果
- TypeScript 之 Object TypesTypeScriptObject
- TypeScript 之 Indexed Access TypesTypeScriptIndex
- TypeScript 之 Conditional TypesTypeScript
- [Redis 系列]redis 學習五,多學習一些 redis 的三種特殊資料型別Redis資料型別
- redis學與思系列(2)Redis
- [Redis 系列]redis 學習三,redis 資料結構之 string 和 list 基本使用及熟悉Redis資料結構
- 【Redis 系列】redis 學習三,redis 資料結構之 string 和 list 基本使用及熟悉Redis資料結構
- 【Redis 系列】redis 學習八,redis 持久化 RDB 和 AOFRedis持久化
- Spring系列學習之Spring Cloud Data Flow 微服務資料流SpringCloud微服務
- 跟我一起學Redis之Redis事務簡單瞭解一下Redis
- Data Guard Broker系列之四:資料庫管理資料庫
- Redis原始碼系列之rename講解Redis原始碼
- Redis系列之(二)——應用場景Redis
- Go 迷思之 Named 和 Unnamed TypesGo
- R語言data manipulation學習筆記之subset dataR語言筆記
- 1.2 C++變數和資料型別 (Variables and Data types )C++變數資料型別
- MySQL 8.0 Reference Manual(讀書筆記39節-- Data Types(1))MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記40節-- Data Types(2))MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記41節-- Data Types(3))MySql筆記
- 深入剖析Redis系列(八) - Redis資料結構之集合Redis資料結構
- 深入剖析Redis系列(五) - Redis資料結構之字串Redis資料結構字串