redis数据类型--个人常规用法
一.String
1.可以容纳最高512M的value。
2.经常用于通过expire来实现自动过期的一些值,直接通过setex 来。
3.通过incrby的方式,来实现value值得增长。
4.执行setnx会返回加成后的值来决定谁获取到了锁,比如同时往一个空的key写 setnx key value,哪个线程返回值是1,即为抢到了锁。
基于以上,则可以实现简单的分布式锁:
public void lock(){
if(jedis.setnx("test.lock","1") == 1){
jedis.expire("test.lock",3);
//TODO
}
}
public void unlock(){
jedis.del("test.lock");
}
二.hash
hash是一个string类型的field和value的映射表,hash很多操作指令都类似于string类型的指令,经常用于存储数据。
1.hash 常常用于存储数据。
2.hash 是 key field value的数据结构,与String相比,更省内存,但是对应自动过期粒度到Key,因此选择哪种数据结构依赖于需求决定。
三.List
List 简单就是队列,一般都是用于做简单的FIFO队列。
1.采用rpush key value 把值赛进去,通过lpop把值取出来。
2.如果是一次取出多个可以用另外一种方式减少交互的次数,降低往返的时延。
a.pipeline 降低交互次数。
b.lrange 获取数据
c.ltrim 移除数据
Jedis client = clientManager.getPooledClient();
Pipeline pipeline = client.pipelined();
pipeline.lrange(key,start,end);
pipeline.ltrim(key,end + 1, -1);
List<Object> rs = pipeline.syncAndReturnAll();
List<String> result = (List<String>) rs.get(0);
四.Set
Set 就是set,String 类型的无序集合,不允许重复
1.set类型可以简单通过sadd 判定某个值是否存在,不存在则返回 1,存在返回0.
2.在一些不允许重复值的场景下还是非常好用的。
五.sortedSet
有序集合,默认根据score排序,可使用场景非常多。
1.热门排序,由于在写入的时候就根据score排序,因此根据score获取非常快,但是在写入时候时间复杂度会相对高些。
2.分布式定时任务,这个当时无意中发现的,再一些时间精度要求没那么高的场景时候非常好用。
a.设置定时任务,key score(时间戳) member(定时任务参数)
b.zrangebyscore,获取某个区间内的任务。返回值是Set<String> 即member的列表
c.zrem key member,根据争抢有移除到的返回值为1,未移除到的返回值为0,来判断这个定时任务在哪台机器上执行。
d.根据具体的member来执行任务
//添加定时任务
jedis.zadd("cronKey",1554739013,"{'param':'123'}"); //获取区间定时任务
Set<String> members = jeids.zrangeByScore("cronKey",0,currentTime); for(String value:members){
if(jedis.zrem("cronKey",value) > 0){
//TODO
}
}
redis数据类型--个人常规用法的更多相关文章
- redis数据类型及使用场景
Redis数据类型 String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令: set,get,decr,incr,mge ...
- redis数据类型-散列类型
Redis数据类型 散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他 ...
- redis数据类型-字符串类型
Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...
- Redis数据类型和常用命令
Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...
- Redis数据类型、两种模型、事务、内部命令
1.redis数据类型 a.字符串,使用场景:常规key-value缓存应用 set name lixiang get name append name 123 # 字符串追加 mset key va ...
- 【python】redis基本命令和基本用法详解
[python]redis基本命令和基本用法详解 来自http://www.cnblogs.com/wangtp/p/5636872.html 1.redis连接 redis-py提供两个类Redis ...
- Redis数据类型和操作
<"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...
- redis数据类型及订阅操作
Redis数据类型详解 Redis键/值介绍 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如“foo”的简单字符串到一个JPG文件的内容都可以.空字符串也是有效k ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
随机推荐
- 【转】 Pro Android学习笔记(三四):Menu(5):动态菜单
目录(?)[-] OptionsMenu的创建方式 如何再次创建OptionsMenu 每次访问都重新填充菜单项 OptionsMenu的创建方式 OptionMenu在第一次访问该菜单时调用,只调用 ...
- 江苏省大学生程序设计竞赛(JSCPC)赛后感
仔细的算了一下,这是我第6次参加与acm有关的比赛了,每一次的经历,在我看来都是一次对自己能力的认识与评估,身边学计算机专业的同龄人对这项比赛的热爱,专注,勇气以及所获得的成就让要好好努力,更要加倍付 ...
- wdatePicker时间控件的使用
wdatePicker时间控件的使用 1.引用wdatePicker控件的js <seript src="../../js/My97DatePicker/wdatePicker.js& ...
- 问题:Oracle long 类型l;结果:oracle里long类型的总结
oracle里long类型的总结 1.LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB. 2.对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG ...
- 利用Ssocks访问国外网站(yutube/google等)
***开源项目:https://github.com/***/ 本例使用的是针对windows系统的c-sharp版本:https://github.com/***/***-windows 运行*** ...
- 【推荐系统】Netflix 推荐系统:第二部分
原文链接:http://techblog.netflix.com/2012/06/netflix-recommendations-beyond-5-stars.htm 在 blog 的第一部分,我们详 ...
- Http协议以及模拟http请求发送数据
1 为什么要使用http协议 假设我现在有两个客户端浏览器,一个是google,一个是IE浏览器:我现在有两个服务器,一个是tomcat,一个是JBoss;在最初的情况下是:如果google要往tom ...
- Socket对象以及异常
1 socket构造器: public Socket() 创建一个Socket套接字 public Socket(InetAddress address,int port) 创建一个指定IP和端口的 ...
- sklearn有关参数
from sklearn import datasets from sklearn.linear_model import LinearRegression import matplotlib.pyp ...
- Ubuntu tar 解压缩命令详解
tar 解压缩命令详解: -c: 建立压缩档案 -x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只 ...