柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) 緩存 Redis
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) 緩存 Redis
概念
Redis是一個(gè)基于內(nèi)存中的key-value數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),常用作:數(shù)據(jù)庫(kù)、緩存、消息中間件。 被稱為結(jié)構(gòu)化的Nosql數(shù)據(jù)庫(kù),非關(guān)系型數(shù)據(jù)庫(kù)。
常見的關(guān)系型數(shù)據(jù)庫(kù)(RDBMS):Mysql Oracle DB2 SQLServer 非關(guān)系型數(shù)據(jù)庫(kù)(NoSql):Redis、Mongo db、MemCached
應(yīng)用場(chǎng)景: 緩存、任務(wù)隊(duì)列、消息隊(duì)列、分布式鎖
特點(diǎn): 基于內(nèi)存存儲(chǔ),讀寫性能高 適合存儲(chǔ)熱點(diǎn)數(shù)據(jù)(熱點(diǎn)商品、資訊、新聞) 企業(yè)應(yīng)用廣泛
數(shù)據(jù)類型
Redis存儲(chǔ)的是key-value結(jié)構(gòu)的數(shù)據(jù),其中key是字符串類型,數(shù)據(jù)保存在value中,因此Redis的數(shù)據(jù)類型實(shí)際上是指value的數(shù)據(jù)類型
數(shù)據(jù)類型描述特點(diǎn)String普通字符串(常用)hash哈希表是一個(gè)String類型的field和value的映射表,適合存儲(chǔ)對(duì)象list列表簡(jiǎn)單的字符串列表,按照插入順序排序,可以有重復(fù)元素set無(wú)序集合String類型的無(wú)序集合,集合成員唯一,不能重復(fù)sorted set / zset有序集合,沒有重復(fù)元素與Set相似,但每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)
下面是存儲(chǔ)結(jié)構(gòu)示意圖:
常用命令
String操作命令
命令說(shuō)明SET key value設(shè)置指定key的值GET key獲取指定key的值SETEX key seconds value設(shè)置key的值,并且key的過(guò)期時(shí)間設(shè)為seconds秒SETNX key value只有在key不存在時(shí)設(shè)置key的值,如果存在不進(jìn)行任何操作
hash操作命令
命令說(shuō)明HSET key field value將key中的字段field的值設(shè)為valueHGET key field獲取存儲(chǔ)在哈希表中指定字段的值HDEL key field刪除存儲(chǔ)在哈希表中的指定字段HKEYS key獲取哈希表中所有字段HVALS key獲取哈希表中所有值HGETALL key獲取在哈希表中指定key的所有字段和值
List列表操作命令
命令說(shuō)明LPUSH key value1 [value2]將一個(gè)或多個(gè)值插入到列表頭部LRANGE key start stop獲取列表指定范圍內(nèi)的元素RPOP key移除并獲取列表最后一個(gè)元素LLEN key獲取列表長(zhǎng)度BRPOP key1 [key2] timeout
set集合操作命令
命令說(shuō)明SADD key member1 [member2]向集合添加一個(gè)或多個(gè)成員SMEMBERS key返回集合中所有成員SCARD key獲取集合的成員數(shù)SINTER key1 [key2]返回給定所有集合的交集SUNION key1 [key2]返回所有給定集合的并集SDIFF key1 [key2]返回給定所有集合的差集SREM key member1 [member2]移除集合中一個(gè)或多個(gè)成員
Zset有序集合操作命令
命令說(shuō)明ZADD key score1 member1 [score2 member2]向有序集合添加一個(gè)或多個(gè)成員ZRANGE key start stop [WITHSCORES]通過(guò)索引區(qū)間返回有序集合中指定區(qū)間內(nèi)的程序員ZINCRBY key increament member有序集合中對(duì)指定成員的分?jǐn)?shù)加上增量increamentZREM key member [member]移除有序集合中的一個(gè)或多個(gè)成員
通用命令
命令說(shuō)明KEYS pattern查找所有符合給定模式(pattern)的keyEXISTS key檢查給定key是否存在TYPE key返回key所存儲(chǔ)的值的類型TTL key返回給定key的剩余生存時(shí)間(TTL,time to live),以秒為單位DEL keykey存在時(shí)刪除key
Java操作Redis
現(xiàn)在項(xiàng)目大多數(shù)都是基于Spring boot開發(fā)的,Spring整合了Redis的操作方式,提供了Spring Data Redis用來(lái)簡(jiǎn)化Redis操作。
第一步導(dǎo)坐標(biāo)
第二步在yml中配置Redis
redis:
host: localhost
port: 6379
#選擇要操作的幾號(hào)數(shù)據(jù)庫(kù)(默認(rèn)有15個(gè)數(shù)據(jù)庫(kù))
database: 0
jedis:
#Redis連接池配置
oppl:
max-active: 8 #設(shè)置最大連接數(shù)
max-wait: 1ms #連接池最大阻塞等待時(shí)間
max-idle: 4 #連接池中的最大空閑連接
min-idle: 0 #連接池中的最小空閑連接
第三步通過(guò)RedisTemplate對(duì)象操作Redis
Spring Data Redis中提供了一個(gè)高度封裝的類: RedisTemplate,針對(duì)jedis客戶端中大量api進(jìn)行了歸類封裝,將同一類型操作封裝為operation接口,具體分類如下:
分類說(shuō)明獲取方法ValueOperations簡(jiǎn)單的K-V操作opsForValue()SetOperationsset類型數(shù)據(jù)操作opsForSet()ZSetOperationszset類型數(shù)據(jù)操作opsForZSet()HashOperations針對(duì)map類型的數(shù)據(jù)操作opsForHash()ListOperations針對(duì)List類型的數(shù)據(jù)操作opsForList()
我們?cè)赥est測(cè)試類中注入RedisTemplate對(duì)象,并通過(guò)這個(gè)對(duì)象來(lái)操作Redis 例如:添加字符串類型 key為name,value為zhangsan
@SpringBootTest
@RunWith(SptingRunner.class)
public class Test{
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testString(){
//添加字符串name為張三
redisTemplate.opsForValue().set("name","zhangsan");
}
}
由于RedisTemplate會(huì)默認(rèn)將key序列化存儲(chǔ),如果要修改序列化方式,則需要?jiǎng)?chuàng)建一個(gè)配置類
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public RedisTemplate
RedisTemplate
//默認(rèn)的Key序列化器為JdkSerializationRedisserializer
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashkeySerializer(new StringRedisserializer());
redisTemplate.setConnectionFactory(connectionFactory);
return redisTemplate;
}
}
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) 緩存 Redis
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。