Redis現(xiàn)有的數(shù)據(jù)類型:
1、String類型
一個鍵在原理上能存儲512MB的數(shù)據(jù)(小編沒有實驗過,一般不存那么多),String類型在二進制上是安全的,可以存儲任何數(shù)據(jù),但是前提是需要進行序列化。
2、Hash類型
每個 hash 可以存儲 2的32次方 - 1 鍵值對(429,496,729,6),差不多有40個億個鍵值對。
3、List類型
list類型可以用來存儲N個有序的字符串,與hash類型在數(shù)量上一樣,支持存儲2^32次方-1個元素。在操作元素上,list可以從兩端進行push(插入)和(pop)彈出元素,支持指定范圍的元素的讀取,支持指定下標的元素的讀取或者寫入。
4、Set類型
Set類型看作為沒有排序的字符集合,和List類型一樣,我們也可以在該類型的數(shù)據(jù)值上執(zhí)行添加、刪除或判斷某一元素是否存在等操作。需要說明的是,這些操作的時間復(fù)雜度為O(1),即常量時間內(nèi)完成次操作。Set可包含的最大元素數(shù)量是4294967295。
5、zSet類型
是set的一個升級版本,在set的基礎(chǔ)上增加了一個順序?qū)傩裕@一屬性在添加時可以指定,每次指定后,zset會自動重新按新的值調(diào)整順序
6、Sorted set類型
相比于set類型, sorted set可以看成是set的一個升級版,在set的基礎(chǔ)上新增了一個特性,就是順序排序,這個特性可以在每次進行數(shù)據(jù)的操作后,進行重新排序。
7、Stream類型
這是redis5.0最新出來的新的類型,一個非常強大的支持多播的可持久化的消息隊列,根據(jù)redis作者坦言,stream類型是借鑒了kafka的設(shè)計。
目前小編還沒找到與redistemplate,如果哪位同學(xué)看到了,麻煩評論告知一下。
String類型
1、 判斷在redis中是不是存在對應(yīng)的key值,有的話就返回true,沒有就返回false
redisTemplate.hasKey(key)
2、如果在redis中存在key值,就取出來
redisTemplate.opsForValue().get(key)
3、刪除redis中對應(yīng)的key值
redisTemplate.delete(key)
4、批量刪除redis中對應(yīng)的key值,其中keys是數(shù)組keys:Collectionkeys
redisTemplate.delete(keys)
5、把key值序列化成byte[]類型
redisTemplate.dump(key)
6、對傳入的key值設(shè)置過期時間
redisTemplate.expire(key, timeout, unit)
redisTemplate.expireAt(key, date)
7、模糊查詢key值,返回的是一個沒有重復(fù)的Set類型
redisTemplate.keys(pattern)
8、根據(jù)新的key的名稱修改redis中老的key的名稱
redisTemplate.rename(oldKey, newKey)
9、獲取key值的類型
redisTemplate.type(key)
10、重命名舊的key值
redisTemplate.renameIfAbsent(oldKey, newKey)
11、隨機從redis中獲取一個key
redisTemplate.randomKey()
12、獲取當(dāng)前key的剩下的過期時間
redisTemplate.getExpire(key)
13、獲取剩余的過期時間,同時設(shè)置時間單位
redisTemplate.getExpire(key, unit)
14、直接將key進行持久化
redisTemplate.persist(key)
15、將當(dāng)前數(shù)據(jù)庫的key移動到指定redis中數(shù)據(jù)庫當(dāng)中
redisTemplate.move(key, dbIndex)
16、最簡單了,設(shè)置key跟value的值
redisTemplate.opsForValue().set(key, value)
17、設(shè)置key跟value的值,同時,設(shè)置過期時間
redisTemplate.opsForValue().set(key, value, timeout, unit)
18、截取key的子字符串
redisTemplate.opsForValue().get(key, start, end)
19、設(shè)置key跟value的值,同時獲取key的值
redisTemplate.opsForValue().getAndSet(key, value)
20、根據(jù)keys批量獲取值
redisTemplate.opsForValue().multiGet(keys)
21、獲取原來的key的值后在后面新增上新的字符串
redisTemplate.opsForValue().append(key, value)
22、增量方式增加double值
redisTemplate.opsForValue().increment(key, increment)
23、通過increment(K key, long delta)方法以增量方式存儲long值(正值則自增,負值則自減)
redisTemplate.opsForValue().increment(key, increment)
24、不存在即新增map的操作
redisTemplate.opsForValue().multiSetIfAbsent(valueMap);
25、增加map集合到redis
Map map = new HashMap();
map.put("1","1");
map.put("2","2");
map.put("3","3");
redisTemplate.opsForValue().multiSet(map);
26、獲取指定key的字符串的長度
redisTemplate.opsForValue().size(key)
27、根據(jù)偏移量 offset 的值,覆蓋重寫value的值
redisTemplate.opsForValue().set(key, value, offset)
28、重新設(shè)置key對應(yīng)的值,如果存在返回false,否則返回true
redisTemplate.opsForValue().setIfAbsent(key, value)
29、重新設(shè)置key的值并加入過期時間
redisTemplate.opsForValue().set(key, value, timeout, unit)
30、將二進制第offset位值變?yōu)関alue
redisTemplate.opsForValue().setBit(key, offset, value)
31、對key所儲存的字符串值,獲取指定偏移量上的位(bit)
redisTemplate.opsForValue().getBit(key, offset)
Hash類型
1、獲取map中指定的key值,如果存在則返回值,沒有就返回null
redisTemplate.opsForHash().get(key, field)
2、獲取變量中的map的鍵值對
redisTemplate.opsForHash().entries(key)
3、新增map值
redisTemplate.opsForHash().put(key, hashKey, value)
4、以map集合的形式添加鍵值對
redisTemplate.opsForHash().putAll(key, maps)
5、當(dāng)hashKey不存在的時候,進行設(shè)置map的值
redisTemplate.opsForHash().putIfAbsent(key, hashKey, value)
6、刪除多個map的字段
redisTemplate.opsForHash().delete(key, fields)
7、查看hash表中指定字段是否存在
redisTemplate.opsForHash().hasKey(key, field)
8、給map中指定字段的整數(shù)值加上增量increment
redisTemplate.opsForHash().increment(key, field, increment)
redisTemplate.opsForHash().increment(key, field, delta)
9、獲取所有map中的所有字段
redisTemplate.opsForHash().keys(key)
10、獲取map中所有字段的數(shù)量
redisTemplate.opsForHash().size(key)
11、獲取hash表中存在的所有的值
redisTemplate.opsForHash().values(key)
12、查看匹配的鍵值對
redisTemplate.opsForHash().scan(key, options)
List類型
1、根據(jù)索引獲取list中的值
redisTemplate.opsForList().index(key, index)
2、獲取list中開始索引到結(jié)束索引的所有值
redisTemplate.opsForList().range(key, start, end)
3、把值添加在list的最前面
redisTemplate.opsForList().leftPush(key, value)
4、直接把一個新的list添加到老的list上面去
redisTemplate.opsForList().leftPushAll(key, value)
5、List存在的時候就加入新的值
redisTemplate.opsForList().leftPushIfPresent(key, value)
6、在pivot值的索引的前面加上一個值
redisTemplate.opsForList().leftPush(key, pivot, value)
7、按照先進先出的順序來添加
redisTemplate.opsForList().rightPush(key, value)
redisTemplate.opsForList().rightPushAll(key, value)
8、在pivot元素的后面添加值
redisTemplate.opsForList().rightPush(key, pivot, value)
9、設(shè)置指定索引的值
redisTemplate.opsForList().set(key, index, value)
10、移除并獲取列表中第一個元素
redisTemplate.opsForList().leftPop(key)
redisTemplate.opsForList().leftPop(key, timeout, unit)
11、移除并獲取列表最后一個元素
redisTemplate.opsForList().rightPop(key)
redisTemplate.opsForList().rightPop(key, timeout, unit)
12、從一個隊列的右邊彈出一個元素并將這個元素放入另一個指定隊列的最左邊
redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey)
redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey, timeout, unit)
13、刪除集合中值等于value的元素
redisTemplate.opsForList().remove(key, index, value)
14、剪裁List列表
redisTemplate.opsForList().trim(key, start, end)
15、獲取list的大小
redisTemplate.opsForList().size(key)
Set類型
1、添加元素
redisTemplate.opsForSet().add(key, values)
2、移除元素
redisTemplate.opsForSet().remove(key, values)
3、刪除一個隨機元素,并返回來
redisTemplate.opsForSet().pop(key)
4、獲取集合的大小
redisTemplate.opsForSet().size(key)
5、判斷集合中是否存在value值
redisTemplate.opsForSet().isMember(key, value)
6、獲取兩個集合的交集并返回一個集合
redisTemplate.opsForSet().intersect(key, otherKey)
7、獲取key集合與otherKey集合的兩個交集,并存儲到destKey
redisTemplate.opsForSet().intersectAndStore(key, otherKey, destKey)
8、key集合與多個集合的交集存儲到destKey無序集合中
redisTemplate.opsForSet().intersectAndStore(key, otherKeys, destKey)
9、獲取多個集合的并集
redisTemplate.opsForSet().union(key, otherKeys)
10、獲取多個集合的并集并存儲到destKey
redisTemplate.opsForSet().unionAndStore(key, otherKey, destKey)
11、獲取差集
redisTemplate.opsForSet().difference(key, otherKeys)
12、獲取差集并存儲到destKey
redisTemplate.opsForSet().differenceAndStore(key, otherKey, destKey)
13、隨機獲取集合中的一個元素
redisTemplate.opsForSet().randomMember(key)
14、獲取集合中的所有元素
redisTemplate.opsForSet().members(key)
15、隨機獲取集合中count個值
redisTemplate.opsForSet().randomMembers(key, count)
16、隨機獲取集合中count個值,但是去重
redisTemplate.opsForSet().distinctRandomMembers(key, count)
17、遍歷set
redisTemplate.opsForSet().scan(key, options)
zSet類型
1、添加元素,從小到大排序
redisTemplate.opsForZSet().add(key, value, score)
2、刪除多個values的值
redisTemplate.opsForZSet().remove(key, values)
3、增加元素的score值同時返回增加后的值
redisTemplate.opsForZSet().incrementScore(key, value, delta)
4、返回元素在集合的從小到大排名
redisTemplate.opsForZSet().rank(key, value)
5、返回元素在集合的由大到小排名
redisTemplate.opsForZSet().reverseRank(key, value)
6、獲取集合中指定區(qū)間的元素
redisTemplate.opsForZSet().reverseRangeWithScores(key, start,end)
7、查詢集合中的元素并從小到大排序
redisTemplate.opsForZSet().reverseRangeByScore(key, min, max)
redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, min, max)
8、從高到低的排序,然后獲取最小與最大值之間的值
redisTemplate.opsForZSet().reverseRangeByScore(key, min, max, start, end)
9、根據(jù)score值獲取元素數(shù)量
redisTemplate.opsForZSet().count(key, min, max)
10、獲取集合的大小
redisTemplate.opsForZSet().size(key)
redisTemplate.opsForZSet().zCard(key)
11、獲取集合中key、value元素的score值
redisTemplate.opsForZSet().score(key, value)
12、移除指定索引元素
redisTemplate.opsForZSet().removeRange(key, start, end)
13、移除指定score范圍的集合成員
redisTemplate.opsForZSet().removeRangeByScore(key, min, max)
14、獲取key和otherKey的并集并存儲在destKey中
redisTemplate.opsForZSet().unionAndStore(key, otherKey, destKey)
15、獲取key和otherKey的交集并存儲在destKey中
redisTemplate.opsForZSet().intersectAndStore(key, otherKey, destKey)