redis知识整理详解大全

网友投稿 650 2022-11-20

redis知识整理详解大全

redis知识整理详解大全

redis 的介绍

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster 传统的关系型数据库难以支持当下“三高”的互联网环境,而NoSQL能在高并发,高扩展等方面体现较强的优势,具体体现有以下几点:易扩展性高负载型(用空间换时间)灵活多样的数据类型高可用性redis是NoSQL中的一个比较典型的​​非关系型数据库​​,其常用在以下几个方面:缓存机制(最常用)在线好友列表任务队列,比如秒杀活动等应用排行榜

redis 基本操作

详细操作

请见 ​​^ 1​​

客户端命令行操作

# 字符串类型的增删改查### 增加set name 'koala'### 获取get name### 更新set name "devin"### 删除del name### 判断是否存在exists name# List 集合的增删改查### 增加lpush user_list 1 2 3### 查询lrange user_list 0 -1### 头部添加lpush user_list 0### 尾部添加rpush user_list 4### 更新下标为0 的值lset user_list 0 "tom"### 删除lrem user_list 0 "tom"# Set集合的增删改查# 创建集合sadd user_set 1 2 3# 查询集合smembers user_set# 删除srem user_set 1# Hash 集合增删改查# 增加hset user_hset 1 "koala"# 得到大小hlen user_hset# 所有字段hkeys user_hset# 所有值hvals user_hset# 得到值hget user_hset 1# 获得所有的keys 和 values hgetall user_hset# 删除hdel user_hset 1#SortedSet# # 添加zadd user_zset 1 "Tom"# 遍历zrange user_zset 0 -1# 按分数便利zrevrange user_zset 0 -1# 查询zscore user_zset "Tom"

案例操作

分布式锁

public class ExportRedisDistributedLock { @Resource private RedissonClient redissonClient; /** * 当前实例纬度的锁,防止单个实例任务数量过大导致服务不可用 */ private static final Map LOCKERS = new ConcurrentHashMap<>(16); public void lock(String key, Integer value) throws InterruptedException { // 任务已经在当前实例执行中 if (LOCKERS.containsKey(key)) { throw new UnableGetExportLockException(); } // 当前实例任务数量达到限定值 if (LOCKERS.size() >= 10) { throw new UnableGetExportLockException(); } RLock lock = redissonClient.getLock(key); // 获取分布式锁,不能获取锁说明任务已经在其他实例执行 if (lock.tryLock()) { LOCKERS.put(key, value); } else { throw new UnableGetExportLockException(); } } public void unlock(String key) { RLock lock = redissonClient.getLock(key); if (LOCKERS.containsKey(key)) { LOCKERS.remove(key); } lock.unlock(); }}

发现问题

RedisTemplate操作数据库都是转义字符

@Autowired(required = false) public void setRedisTemplate(RedisTemplate redisTemplate) { RedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); redisTemplate.setHashValueSerializer(stringSerializer); this.redisTemplate = redisTemplate; }

deepin 连接redis

连接redis ​​^ 2​​

参考内容

​​redis 官网​​​​RedisTemplate操作Redis,这一篇文章就够了(一)​​​​redis template 工具类​​

注脚

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Beans拷贝忽略空对象
下一篇:直播常用url
相关文章

 发表评论

暂时没有评论,来抢沙发吧~