redis用法

Mr.Jia 2025-6-22 134 6/22
分布式锁
常规锁
redissonClient.getLock(key);
waitTime 锁的等待时间
leaseTime 租约时间
unit 单位

redis会根据设置的锁等待时间等待获取锁
(等待获取锁的方式一般分为两种
  轮询和通知,轮询一般会每隔一段时间获取一遍,通知是当锁释放之后告诉等待的锁
  不同实现还是有相应的公平锁和非公平锁,公平锁会按线程的等待时间的顺序来分配时,非公平锁则相反谁抢到是谁的,不管等待顺序)

扩展
可以使用缓存+分布式锁合作的方式
通过缓存记录操作时间,并设置过期时间(该时间是不想同一时间触发的时间),
当没获取到时间或者本次时间距离上次时间超过了预设的时间(防止特殊情况即时设置了过期时间依旧没删除缓存),则重置该缓存的时间

计算距离(Geo)
RGeo<Object> key = redissonClient.getGeo("key"); 获取Geo
store.add(entity.getLongitude(), entity.getLatitude(), userCity);设置第一个经纬度位置
key.add(Double.parseDouble(item.getLongitude()), Double.parseDouble(item.getLatitude()), item.getDetailAddress()); 添加第二个经纬度地址
Double distance = key.dist(userCity, item.getDetailAddress(), GeoUnit.KILOMETERS);计算距离
item.setDistance(distance);

 

- THE END -

Mr.Jia

6月22日21:47

最后修改:2025年6月22日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论