老鐵們,大家好,相信還有很多朋友對于redis五大基本數(shù)據(jù)類型和mysql數(shù)據(jù)類型的相關問題不太懂,沒關系,今天就由我來為大家分享分享redis五大基本數(shù)據(jù)類型以及mysql數(shù)據(jù)類型的問題,文章篇幅可能偏長,希望可以幫助到大家,下面一起來看看吧!
redis七種數(shù)據(jù)類型
7種類型分別是:
1.字符串(string)
2.哈希(hash)
3.列表(list)
4.集合(set)
5.有序集合(sortedset)
6.位圖(Bitmaps)
7.基數(shù)統(tǒng)計(HyperLogLogs)
a、字符串
String是一組字節(jié)。在Redis數(shù)據(jù)庫中,字符串是二進制安全的。這意味著它們具有已知長度,并且不受任何特殊終止字符的影響??梢栽谝粋€字符串中存儲最多512兆字節(jié)的內(nèi)容。
b、哈希
哈希是鍵值對的集合。在Redis中,哈希是字符串字段和字符串值之間的映射。因此,它們適合表示對象。
c、列表
Redis列表定義為字符串列表,按插入順序排序??梢詫⒃靥砑拥絉edis列表的頭部或尾部。
d、集合
集合(set)是Redis數(shù)據(jù)庫中的無序字符串集合。在Redis中,添加,刪除和查找的時間復雜度是O(1)。
e、有序集合
Redis有序集合類似于Redis集合,也是一組非重復的字符串集合。但是,排序集的每個成員都與一個分數(shù)相關聯(lián),該分數(shù)用于獲取從最小到最高分數(shù)的有序排序集。雖然成員是獨特的,但可以重復分數(shù)。
f、位圖RedisBitmap
RedisBitmap通過類似map結(jié)構(gòu)存放0或1(bit位)作為值。
RedisBitmap可以用來統(tǒng)計狀態(tài),如日活是否瀏覽過某個東西。
Redissetbit命令
Redissetbit命令用于設置或者清除一個bit位。
*Redissetbit命令語法格式
SETBITkeyoffsetvalue
g、基數(shù)統(tǒng)計HyperLogLogs
RedisHyperLogLog可以接受多個元素作為輸入,并給出輸入元素的基數(shù)估算值
基數(shù)
集合中不同元素的數(shù)量,比如{'apple','banana','cherry','banana','apple'}的基數(shù)就是3
估算值
算法給出的基數(shù)并不是精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的范圍之內(nèi)
HyperLogLog的優(yōu)點是:即使輸入元素的數(shù)量或者體積非常非常大,計算基數(shù)所需的空間總是固定的、并且是很小的。
在Redis里面,每個HyperLogLog鍵只需要花費12KB內(nèi)存,就可以計算接近264個不同元素的基數(shù)。
這和計算基數(shù)時,元素越多耗費內(nèi)存就越多的集合形成鮮明對比。
因為HyperLogLog只會根據(jù)輸入元素來計算基數(shù),而不會儲存輸入元素本身,所以HyperLogLog不能像集合那樣,返回輸入的各個元素。
RedisPFADD命令
RedisPFADD命令將元素添加至HyperLogLog
*RedisPFADD命令語法格式
PFADDkeyelement[element...]
redis zset score是什么數(shù)據(jù)類型
Sortedset是set的一個升級版本,它在set的基礎上增加了一個順序?qū)傩?,這一屬性在添加修改元素時候可以指定,每次指定后,zset會自動重新按新的值調(diào)整順序。
可以理解為有兩列字段的數(shù)據(jù)表,一列存value,一列存順序編號。
操作中key理解為zset的名字。
redis可以存儲哪些數(shù)據(jù)類型
redis開創(chuàng)了一種新的數(shù)據(jù)存儲思路,使用redis,我們不用在面對功能單調(diào)的數(shù)據(jù)庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作,為不同的大象構(gòu)建不同的冰箱。 redis常用數(shù)據(jù)類型 redis最為常用的數(shù)據(jù)類型主要有以下五種:string、hash、list、set、sortedset
Redis緩存是針對于業(yè)務數(shù)據(jù)緩存還是對數(shù)據(jù)庫數(shù)據(jù)緩存
不應該問Redis緩存的是業(yè)務數(shù)據(jù)還是數(shù)據(jù)庫數(shù)據(jù),可以問Redis是屬于業(yè)務層還是數(shù)據(jù)層,這樣問比較合理。
我覺得Redis屬于數(shù)據(jù)層;首先我們先看一個概念。
DAOdataaccessobject:數(shù)據(jù)訪問對象
主要用來封裝對數(shù)據(jù)的訪問,注意,是對數(shù)據(jù)的訪問,不是對數(shù)據(jù)庫的訪問。
其實你的數(shù)據(jù)可以在數(shù)據(jù)庫,在文件中,還是在Redis中,都可以通過DAO層訪問。
所以我把Redis看成和數(shù)據(jù)庫是同一個級別的。
Mybatis的二級緩存我們使用Redis的時候,很多時候都是通過代碼操作Redis,比如使用用Jedis,其實還有一個簡單的辦法,就是使用Redis做Mybatis的二級緩存,只需要做簡單的配置和極少量的代碼即可。
我們之前做的一個項目,會有大量的數(shù)據(jù)需要頻繁被查詢,很少(幾乎沒有)做新增修改刪除的操作,這種數(shù)據(jù)很適合使用Redis進行緩存,所以新的版本想把Redis引入進來。
引入所需要的jar包:
增加配置文件
實現(xiàn)org.apache.ibatis.cache.Cache接口
mybatis-config.xml開啟二級緩存:<settingname="cacheEnabled"value="true"/>
mybatis的Mapper配置文件中增加配置:
<cachetype="com.xxx.xxx.cache.RedisCache"/>
其中useCache="false"表示,這個查詢SQL不進行緩存;useCache="true",這個查詢SQL的結(jié)果進行緩存。
其余的insert、update、delete操作,可以進行如下配置:flushCache="true/false",當設置成true的時候,執(zhí)行sql會把redis中的緩存刪除(調(diào)用Cache實現(xiàn)類的clear()方法),設置成false,則不做操作。
所以到這里也可以清楚的理解何時進行緩存、何時進行刪除緩存了:程序剛啟動的時候,Redis中是空的。每次執(zhí)行select的時候,首先會去redis讀取,讀取不到的話,再去db中查詢,查詢結(jié)束后,將結(jié)果存入redis中(key里面包含了SQL語句),注意,如果sql查詢無結(jié)果,也會放入redis中。執(zhí)行insert、update、delete語句的時候,清除對應的redis中的值。
整理的功能實現(xiàn)還是很簡單的,大家有興趣可以嘗試一下。
如果大家需要demo的源碼,后續(xù)我整理一下發(fā)出來,有需要的朋友可以關注下我。
好了,文章到這里就結(jié)束啦,如果本次分享的redis五大基本數(shù)據(jù)類型和mysql數(shù)據(jù)類型問題對您有所幫助,還望關注下本站哦!