做網(wǎng)站用html網(wǎng)絡(luò)營銷師有前途嗎
Redis 是一個(gè)基于內(nèi)存的key-value的結(jié)構(gòu)數(shù)據(jù)庫
適合存儲(chǔ)熱點(diǎn)數(shù)據(jù)
Macos安裝Redis
https://redis.io/docs/getting-started/installation/install-redis-on-mac-os/
安裝redis
brew install redis
查看安裝信息:
brew info redis
前臺(tái)啟動(dòng)redis:
redis-server
后臺(tái)啟動(dòng)redis:
brew services start redis
查看信息:
brew services info redis
停止:
brew services stop redis
配置
打開/opt/homebrew/etc/redis.conf
配置文件
修改密碼
requirepass 123456
登錄redis
redis-cli -h localhost -p 6379 -a 123456
數(shù)據(jù)結(jié)構(gòu)
字符串
SET key value #設(shè)置
GET key #獲取
SETEX key seconds value #設(shè)置指定key過期時(shí)間,單位s
SETNX key vvalue 只有在key不存在時(shí)才設(shè)置
哈希
HSET key fiele value 將key設(shè)置為value
HGET key field 獲取
HDEL key field 刪除
HKEYS key 獲取所有字段
HVALS key 獲取所有值
列表
LPUSH key value1[value2] 插入到頭部 左側(cè)
LRANGE key start stop 獲取指定范圍達(dá)到元素
RPOP key 移除并獲取列表最后一個(gè)元素 右側(cè)
LLEN key 獲取列表長度
集合
SADD key number1 [number2] 插入一個(gè)成員
SMEMBERS key 返回集合中所有成員
SCARD key 獲取成員數(shù)
SINTER key1[key2] 返回定義所喲集合的交集
SUNION key1 [key2] 返回所有集合的并集
SREM key number1[numer2] 刪除集合中成員
有序集合
ZADD key score1 member1 [score2 member2] 向有序集合添加一個(gè)成員
ZRANGE key start stop [WITHSCORES] 通過索引區(qū)間返回有序集合指定區(qū)間內(nèi)的成員
ZINCRBY key increment member 對(duì)指定成員分?jǐn)?shù)加上增量increment
ZREM key member [member..] 刪除成員
通用命令
KEYS pattern 查找所有符合給定模式的key
EXISTS key 檢查給定key是否存在
TYPE key 返回key 所存儲(chǔ)的值的類型
DEL key 在key存在時(shí)刪除key
SpringBoot中使用Redis
導(dǎo)入依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置Redis
spring:redis:host: localhostport: 6379password: 123456database: 0
編寫配置類
@Slf4j
@Configuration
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate redisTemplate = new RedisTemplate<>();// 設(shè)置redis連接工廠redisTemplate.setConnectionFactory(redisConnectionFactory);// 設(shè)置redis的String/Value的默認(rèn)序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());log.info("RedisTemplate注入成功");return redisTemplate;}
}
使用Redis
@SpringBootTest
class RedisConfigurationTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testString() {ValueOperations valueOperations = redisTemplate.opsForValue();valueOperations.set("name", "cxk");String name = (String) valueOperations.get("name");System.out.println(name);valueOperations.set("code", "1234", 3, TimeUnit.HOURS); //3小時(shí)后過期valueOperations.setIfAbsent("code1", "1234"); //如果不存在則設(shè)置}@Testpublic void testHash() {HashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("user", "name", "cxk");hashOperations.put("user", "age", "18");String name = (String) hashOperations.get("user", "name");System.out.println(name);Set user = hashOperations.keys("user");System.out.println(user);List user1 = hashOperations.values("user");System.out.println(user1);hashOperations.delete("user", "name");}@Testpublic void testList() {ListOperations listOperations = redisTemplate.opsForList();listOperations.leftPushAll("list", "a", "b", "c");listOperations.leftPush("list", "d");List list = listOperations.range("list", 0, -1);System.out.println(list);listOperations.rightPop("list");Long size = listOperations.size("list");System.out.println(size);}@Testpublic void testSet() {SetOperations setOperations = redisTemplate.opsForSet();setOperations.add("set", "a", "b", "c", "d", "e");Set set = setOperations.members("set");System.out.println(set);setOperations.remove("set", "a", "b");set = setOperations.members("set");System.out.println(set);setOperations.add("set2", "a", "b", "c", "d", "e");Set union = setOperations.union("set", "set2");Set intersect = setOperations.intersect("set", "set2");Set difference = setOperations.difference("set", "set2");System.out.println(union);System.out.println(intersect);System.out.println(difference);}@Testpublic void testZset(){ZSetOperations zSetOperations = redisTemplate.opsForZSet();zSetOperations.add("zset", "a", 1);zSetOperations.add("zset", "b", 2);zSetOperations.add("zset", "c", 3);Set zset = zSetOperations.range("zset", 0, -1);System.out.println(zset);zSetOperations.incrementScore("zset", "a", 1);zSetOperations.remove("zset", "a");}@Testpublic void testCommon(){Set keys = redisTemplate.keys("*");System.out.println(keys);Boolean name = redisTemplate.hasKey("name");for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type.name());}redisTemplate.delete("name");}
}