Redis的五種基本資料型別
1、概述
- Redis是一個由C語言開發的基于key-value形式的非關系型資料庫
- key-value:鍵值對【鍵:String,值:五種資料型別】
- 非關系資料庫:NoSQL【Not Only SQL】
- 關系型資料庫:由二維表的形式來存盤資料
- 不是關系型資料庫,就是非關系型資料庫
- 非關系資料庫:NoSQL【Not Only SQL】
- key-value:鍵值對【鍵:String,值:五種資料型別】
- 存盤介質
- 默認是記憶體
- 可以持久化到磁盤上
- 官網
- 中文:http://www.redis.cn/
- 英文:https://redis.io/
2、Redis的五種基本資料型別
- string:字串
- hash:物件
- list:有序串列
- set:無序集合
- zset:有序集合
3、基本用法
1、string
set get getset mset mget
setnx strlen append incr incrby
decr decrby
#設定key和value,正確回傳OK
set key value
set name zhangsan
#獲取key對應的value值,若沒有回傳nil
get key
get name
#回傳key對應的value,再重新設定這個key的值
getset key value
getset name lily
#設定多個鍵值對 正確回傳OK
mset k1 v1 k2 v2 ...
mset sex 1 age 20 address hz
#獲取多對key對應的value
mget k1 k2 k3 ...
mget sex age address
#設定key-value:如果key不存在,則設定,如果key存在,則什么都不做
#成功回傳1,失敗回傳0
setnx key value
setnx phone 13577889900
#計算key對應的value的長度
strlen key
strlen phone
#在原先的基礎之上進行字串追加
append key value
append address xs
#本來address的值是hz,現在就是hzxs
#自增1,value是數值型別才能成功,如果key不存在,則直接以0為基礎,進行自增,如果這個值不是數值,則會報錯
incr key
incr age
#age本來是20,現在回傳就是21
#自增指定數量,value是數值型別才能成功
incrby age 5
#age本來是20,現在回傳就是25
#自減1,value是數值型別才能成功,
decr key
decr age
#age本來是0,現在回傳就是-1
#自減指定數量,value是數值型別才能成功
decrby key
decrby age 20
#age本來是30,現在回傳就是10
2、hash
hset hmset hget hmget hkeys
hvals hgetall hexists hlen hsetnx hdel
#設定值,必須指定大key和小key、value
hset person name tom
#設定多值
hmset person sex 1 age 20
#獲取單個小key對應的value
hget person sex
#獲取多個小key對應的value們
hmget person name age
#獲取所有的小key
hkeys person
#獲取所有的小key對應的values
hvals person
#獲取所有大key中的鍵值對
hgetall person
#判斷小key是否存在
hexists person age
#求大key中小key的數量
hlen person
#設定小key【小key不存在,則設定成功,如果存在,則什么都不做】
hsetnx person age 25
#洗掉
hdel person age
3、list
- 增加資料:兩種方式
- 左邊增加資料:左壓堆疊,后增加的資料在左邊
- 右邊增加資料:右壓堆疊,后增加的資料在右邊
- 讀取資料
- 讀取資料從左往右
lpush rpush lrange llen lindex lpop rpop rpoplpush lrem
#左壓堆疊
lpush key v1 v2 ...
#特征:存入的資料順序跟讀取順序相反
#右壓堆疊
rpush key v1 v2 ...
#特征:存入的資料順序跟讀取順序相同
#查詢串列中的資料
#下標從0開始,如果要讀到最末尾,endIndex就是-1
lrange key startIndex endIndex
lrange key 0 -1
#獲取串列元素的個數
llen key
#獲取指定索引的元素,index表示索引
lindex key index
#獲取指定索引為3的元素
lindex key 3
#從左邊彈出一個元素[獲取最左邊的元素,再洗掉它]
lpop key
#從右邊彈出一個元素
rpop key
#從一個串列的右邊彈出元素,再追到加另一個串列的左邊
rpoplpush 源串列 目標串列
#移除count個的value值
lrem key count value
lrem names 2 tom
#洗掉names串列中2個tom【是從左開始移除】
4、set
sadd scard smembers sismember spop sdiff sinter sunion
sdiffstore sinterstore sunionstore smove
#存值
sadd myset aa bb cc
#回傳存入的個數
#獲取集合長度
scard myset
#獲取集合元素
smembers myset
#判斷元素是否在集合中,存在:回傳1,不存在:回傳0
sismember myset cc
#隨機彈出一個元素
spop myset
#隨機彈出指定個數元素
spop myset 2
#差集
sdiff myset1 myset2
#交集
sinter myset1 myset2
#并集
sunion myset1 myset2
#將交集結果存入到另一個集合中
#sdiffstore 存盤結果的集合名 操作的集合一 操作的集合二
sdiffstore myset3 myset1 myset2
#將交集結果存入到另一個集合中
sinterstore myset4 myset1 myset2
#將并集結果存入到另一個集合中
sunionstore myset5 myset1 myset2
#將myset1中的aa元素移動到myset3
smove myset1 myset3 aa
5、zset(sorted set)
zadd zcard zrange zincrby zscore zinterstore zrangebyscore zrevrangebyscore
zrem zrank zremrangebyscore
#向有序集合中增加元素
#zadd 集合名 分數1 名稱1 分數2 名稱2 ...
zadd tuhaobang 10 zhangsan 80 lisi 30 wangwu
#回傳插入的數量
#獲取集合中元素的數量
zcard tuhaobang
#獲取集合中指定區間的元素名稱,如果后面的索引是-1,則回傳所有元素名稱
zrange tuhaobang 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
#獲取集合所有的元素,包括名稱和分數【是從小到大排序】
zrange tuhaobang 0 -1 withscores
1) "zhangsan"
2) "10"
3) "wangwu"
4) "30"
5) "lisi"
6) "80"
#獲取集合前兩位元素的名稱和分數
zrange tuhaobang 0 1 withscores
1) "zhangsan"
2) "10"
3) "wangwu"
4) "30"
#為集合中指定的名稱的元素增加分數
zincrby tuhaobang 50 zhangsan
#回傳增加后的分數
#回傳集合中指定名稱的分數
zscore tuhaobang wangwu
#把myzset1和myzset2根據元素名稱求出交集,并把相同名稱的value加在一起,得到元素名稱的新分數,存入到新集合中,成功回傳的是交集的個數
#zinterstore 目標集合 操作集合的數量 集合一 集合二 ...
ZINTERSTORE myzset3 2 myzset1 myzset2
#zrangebyscore 集合名稱 小分數 大分數 [withscores] [limit 第幾條開始顯示 顯示數量]
#在不知道當前集合中最大值和最小值的情況下,-inf代表最小值 +inf代表最大值
#獲取tuhaobang集合中所有元素名稱及分數
zrangebyscore tuhaobang -inf +inf withscores
#獲取tuhaobang集合中第一個元素名稱及分數
zrangebyscore tuhaobang -inf +inf withscores limit 0 1
#獲取tuhaobang集合中分數在50-100之間的所有元素名稱及分數
zrangebyscore tuhaobang 50 100 withscores
#獲取tuhaobang集合中分數在50-100之間的前兩位元素名稱及分數
zrangebyscore tuhaobang 50 100 withscores limit 0 2
#按從大到小的順序進行排序,并獲取前2位
zrevrangebyscore tuhaobang +inf -inf withscores limit 0 2
#根據元素名洗掉元素
zrem key member [member...]
#獲取集合中指定元素名稱對應的索引
zrank tuhaobang lisi
#洗掉指定分數區間的元素[10,20],洗掉成功回傳洗掉的個數,否則回傳0
zremrangebyscore tuhaobang 10 20
4、通用命令
- key相關
#查找匹配規則的key, *:代表0到多個字符,?代表一個字符
#查詢所有key
keys *
#查詢keys中第二個字母為a的key
keys ?a*
#判斷key是否存在,存在:回傳1,不存在:回傳0
exists key
#洗掉key,洗掉成功回傳1,洗掉不存在的key回傳0
del key
#查看key剩余有效時間
#ttl key
ttl gender
結果:回傳剩余有效時間,如果已經過期:回傳-2,如果沒有設定有效時間:回傳-1
#設定已經存在的key的過期時間,單位為秒
expire key seconds
#為已經存在的key設定過期時間,單位是毫秒
pexpire key 毫秒
#查看指定key的剩余存活時間,單位是毫秒
pttl key
#移除指定key的生存時間,永久的持久化
persist key
#獲取指定的key的value的資料型別
type key
#移動當前資料庫中對應的key到其他資料庫,dbindex是0-15
move key dbindex
- 資料庫相關
#redis默認有16個資料庫,分別是 db0 - db15
#查看當前資料庫下有多少key
dbsize
#切換資料庫,dbindex是0-15
select dbindex
#清空當前資料庫
flushdb
#清空所有資料庫中的資料
flushall
#實時監控Redis服務接收到的命令【其他客戶端的操作,能夠被監控到】
monitor
- 查看redis讀寫性能
#redis寫的性能
redis-benchmark set
#redis讀的性能
redis-benchmark get
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/495435.html
標籤:Java
