一缅茉、Redis 數(shù)據(jù)結(jié)構(gòu)
要想使用 Redis 進(jìn)行數(shù)據(jù)存儲(chǔ),首先需要了解 Redis 的數(shù)據(jù)結(jié)構(gòu)男摧,redis存儲(chǔ)的是:key,value格式的數(shù)據(jù)蔬墩,其中key都是字符串,value有5種不同的數(shù)據(jù)結(jié)構(gòu):
字符串類型 string
哈希類型 hash : map格式 ?
列表類型 list : linkedlist格式耗拓。支持重復(fù)元素
集合類型 set ?: 不允許重復(fù)元素
有序集合類型 sortedset:不允許重復(fù)元素拇颅,且元素有順序
這五種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)方式可見(jiàn)下表:
?二、Redis 基本命令操作
針對(duì)以上五種不同的數(shù)據(jù)結(jié)構(gòu)乔询,Redis 有相應(yīng)的命令來(lái)進(jìn)行操作蔬蕊,可以達(dá)到對(duì)數(shù)據(jù)的存儲(chǔ)、獲取和刪除
1、字符串型:string
存儲(chǔ):set key value
eg:set name oneStar
獲劝逗弧:get key
eg:get name
刪除:del key
eg:del name
2麻献、哈希類型:hash
存儲(chǔ):hset key field value
eg:hset myhash name twoStar
? ? ? ? hset myhash age 18
獲取指定的field對(duì)應(yīng)的值:hget key field
獲取所有的field和value:hgetall key
eg:hget myhash name
eg:hgetall myhash
刪除:hdel key field
eg:hdel myhash name
3、列表類型:list
可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)
存儲(chǔ)
lpush key value:將元素加入列表左表
rpush key value:將元素加入列表右邊
eg:lpush myList a
? ? ? ? lpush myList b
? ? ? ??rpush myList c
獲炔掳纭:lrange key start end :范圍獲取
eg:lrange myList 0 -1
刪除
lpop key: 刪除列表最左邊的元素勉吻,并將元素返回
eg:lpop myList
rpop key: 刪除列表最右邊的元素,并將元素返回
eg:rpop
4旅赢、集合類型:set
不允許重復(fù)元素
存儲(chǔ):sadd key value
eg:sadd myset a
獲取set集合中所有元素:smembers key
eg:smembers myset
刪除set集合中的某個(gè)元素:srem key value
eg:srem myset a
5齿桃、有序集合類型:sortedset
不允許重復(fù)元素,且元素有順序.每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)煮盼。redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序短纵。
存儲(chǔ):zadd key score value
eg:zadd mysort 60 oneStar
? ? ? ??zadd mysort 50 twoStar
? ? ? ??zadd mysort 80 threeStar
獲取:zrange key start end [withscores]
eg1:zrange mysort 0 -1
eg2:zrange mysort 0 -1 withscores
刪除:zrem key value
eg:zrem mysort oneStar
6僵控、通用命令
keys * : 查詢所有的鍵
eg:keys *
type key : 獲取鍵對(duì)應(yīng)的value的類型
eg:type myhash
del key:刪除指定的key value
eg:del myhash
三香到、Redis持久化
redis是一個(gè)內(nèi)存數(shù)據(jù)庫(kù),當(dāng)redis服務(wù)器重啟报破,獲取電腦重啟悠就,數(shù)據(jù)會(huì)丟失,為了解決這個(gè)問(wèn)題充易,我們可以將 redis 內(nèi)存中的數(shù)據(jù)持久化保存到硬盤的文件中梗脾。
Redis 持久化機(jī)制有兩種:
1、RDB 持久化機(jī)制
RDB 持久化機(jī)制是默認(rèn)的方式盹靴,不需要進(jìn)行配置炸茧,默認(rèn)就使用這種機(jī)制,在一定的間隔時(shí)間中稿静,檢測(cè)key的變化情況宇立,然后持久化數(shù)據(jù),對(duì)性能影響不大自赔。
【1】RDB 持久化機(jī)制妈嘹,是根據(jù) Redis 安裝目錄下的?redis.windwos.conf 文件中配置內(nèi)容決定的:
save 900 1:如果 15 分鐘后最少有一個(gè) key 被改變就持久化一次
save 300 10:如果 5 分鐘后最少有 10 個(gè) key 被改變就持久化一次
save 60 ?10000:如果 1 分鐘后最少有 10000 個(gè) key 被改變就持久化一次
可以通過(guò)改變這個(gè)配置來(lái)指定自己想要的持久化時(shí)間和次數(shù)
【2】重新在命令行啟動(dòng)redis服務(wù)器,并指定配置文件名稱绍妨,便可以進(jìn)行持久化了
2润脸、?AOF 持久化機(jī)制
AOF 持久化機(jī)制是使用日志記錄的方式,可以記錄每一條命令的操作他去,可以每一次命令操作后毙驯,持久化數(shù)據(jù),執(zhí)行一條語(yǔ)句就進(jìn)行一次持久化灾测,對(duì)性能的影響比較大爆价。
【1】開(kāi)啟 AOF 持久化機(jī)制
編輯 redis.windwos.conf 文件,找到 appendonly no,將 no 改為 yes铭段,即表示開(kāi)啟 AOF 持久化機(jī)制
在?redis.windwos.conf 文件中骤宣,可以找到如下信息:
# appendfsync always : 每一次操作都進(jìn)行持久化
appendfsync everysec : 每隔一秒進(jìn)行一次持久化
# appendfsync no?? ? : 不進(jìn)行持久化
【2】重新在命令行啟動(dòng)redis服務(wù)器,并指定配置文件名稱序愚,便可以進(jìn)行持久化了