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可以包含任何数据 ...
随机推荐
- centos6 启动流程
具体过程:1)加载BIOS的硬件信息,执行BIOS内置程序.2)读取MBR(Master Boot Record)中Boot Loader中的引导信息.3)加载内核Kernel boot到内存中.4) ...
- T-SQL操作XML 数据类型方法 "modify" 的参数 1 必须是字符串文字。
----删除关键字的同时也清理AP表中所有关联这个ID的数据 create trigger Trg_UpdateAppWordOnDelKeyWord on [dbo].[tbl_KeyWord] f ...
- 利用java mail发送邮件
import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import java ...
- XML解析,出现ClassCastException 原因
import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.Docum ...
- CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解
新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域 ...
- PCLVisualizer可视化类(2)
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=163 可视化点云颜色特征 所示,点赋予不同的颜色表征其对应的z轴值不同.PC ...
- CodeForces 492D Vanya and Computer Game (思维题)
D. Vanya and Computer Game time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- 2. DVWA亲测CSRF漏洞
DVWA登陆 用户名:admin 密码:password Low级: 查看源代码: <?php if (isset($_GET['Change'])) { // Turn requ ...
- vue 报错 Uncaught (in promise) error
可尝试在then()后加上catch() ps:该图来自网络
- 开发php接口注意点
1.制定规范 开发前一定要定好一个规范,比如要定好数据返回的通用参数和格式.关于数据格式,用的比较多的有xml和json,我建议用json,因为json比xml的好处更多. 2.精简的返回数据 接口数 ...