
redis
文章平均质量分 63
淘气的高老板
污,孤傲,高冷,薄情,悲天悯人的高老板
展开
-
REDIS学习(5)jedis 和 jedis连接池
目前情况是 srping boot中测试代码mvn的包为: org.springframework.boot spring-boot-starter-redis原创 2016-08-17 21:27:05 · 3309 阅读 · 0 评论 -
分布式事务的特性CAP 关系数据库事务的特性ACID 非关系数据库的特性BASE
在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency)原创 2011-11-14 02:55:15 · 1382 阅读 · 0 评论 -
REDIS(11) redis做分页
之前的数据都加载到了本地java的Map,分页如下@RequestMapping("/articles") String articles(Model model, HttpServletRequest req, HttpServletResponse rsp, @RequestParam Optional type_id, @RequestParam Optional page_no) {原创 2017-02-09 15:51:44 · 2913 阅读 · 2 评论 -
REDIS 进阶(12) redis分片
分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集。本文第一部分将向你介绍分片的概念,第二部分将向你展示 Redis 分片的可选方案。分片能做什么Redis 的分片承担着两个主要目标:允许使用很多电脑的内存总和来支持更大的数据库。没有分片,你就被局限于单机能支持的内存容量。允许伸缩计算能力到多核或多服务器,原创 2017-02-20 14:20:13 · 1220 阅读 · 0 评论 -
Redis内部数据结构总结(2)dict
dict是redis一个非常重要的基础数据结构,dict用来维护key和value映射关系的数据结构,与很多语言中的Map或者dictionary类似。redis的一个database中所有key到value的映射,就是一个dict来维护的。另外,当redis中的hash结构数据较多时,hash的底层会从ziplist转为dict。当redis中的sorted set 数据较多时,so原创 2016-11-04 14:41:35 · 422 阅读 · 0 评论 -
redis内部数据结构总结(7)intset
Redis里面使用intset是为了实现集合(set)这种对外的数据结构。set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。Redis里的set结构还实现了基础的集合并、交、差的操作。与Redis对外暴露的其它数据结构类似,set的底层实现,随着元素类型是否是整型以及添加的元素的数目多少,而有所变化。概括来讲,当set中添加的元素都是整型且元素数目较少时,set使用intset作为原创 2017-02-11 20:55:53 · 522 阅读 · 0 评论 -
REDIS (13) 缓存的穿透,雪崩和热点key
穿透穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层。从而失去缓存的意义。解决办法:①用一个bitmap和n个hash函数做布隆过滤器过滤没有在缓存的键。②持久层查询不到就缓存空结果,有效时间为数分钟。雪崩雪崩:缓存大量失效的时候,引发大量查询数据库。解决办法:①用锁/分布式锁或者队列串行访问②缓存失效时间均匀分布热点key热点ke...原创 2017-03-06 14:26:19 · 8443 阅读 · 3 评论 -
如何用Java和Redis设计一个高效的先入先出的队列
问题:如何用redis和Java设计一个高效的先进先出队列?分析: redis的list底层是多个ziplist结构组成的“双向”链表。中间部分还压缩了一下。 最外层是由两个哈希表构成的dict。 哈希表的get(key)时间复杂度为O(1),而且这个O(1)理论上不会因为所占内存的大小和元素数目所改变。list的出队列和入队操作也都是O(1)。 Java的队列时间复杂度也应为O(1)。可不原创 2017-07-06 21:54:07 · 9448 阅读 · 0 评论 -
redis连接不了客户端的问题
| `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'|原创 2017-08-09 02:01:20 · 955 阅读 · 0 评论 -
REDIS 学习(1)linux环境,以及REDIS的启动,关闭和连接,以及在不重启的情况下开启AOF
官网:http://www.redis.io/download一,根据官网提示,下载并编译$ wget http://download.redis.io/releases/redis-3.2.0.tar.gz$ tar xzf redis-3.2.0.tar.gz$ cd redis-3.2.0$ make二,启动$ src/redis-server三原创 2016-06-15 11:34:17 · 1962 阅读 · 0 评论 -
REDIS 学习(10)流程图解使用redis实现分布式锁
redis作为集中式缓存,可以通过它来实现分布式锁。首先用到的redis操作有:setnx key value: 当key不存在的时候生效并返回1,当已经有此key的时候返回0getset key value: 设置新值返回旧值,如果之前不存在也设置新值并返回nilget key: 返回对应的值,没有则返回nildel key,key1,key2: ...原创 2016-09-28 17:23:23 · 2419 阅读 · 0 评论 -
REDIS (15) JedisPool的参数testoncreate,testWhileIdle,testonborrow和testonreturn
流程【testonreturn参数】 JedisPool.returnResource(jedis)->pool.returnObject(jedis)->pool.getTestOnReturn() |原创 2017-12-21 10:24:06 · 4892 阅读 · 0 评论 -
REDIS 学习(7) 启动时的几个异常排除
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.原创 2016-09-09 22:39:45 · 2158 阅读 · 0 评论 -
REDIS 学习(8)并发导致的异常
jedis并发获取redis时报的异常原创 2016-09-10 13:39:59 · 4482 阅读 · 0 评论 -
REDIS 学习(9)读写分离,redis主从配置
master不用作任何配置slave添加配置如下:slaveof 127.0.0.1 6379masterauth foobared如果还允许,程序对从数据库进行写操作,从数据库还需要添加slave-read-only no足以,master数据库数量为n的时候,slave数据库数目应为n+1,而且配置了slave可以写后,可以对第n+1个数据库记录跟m原创 2016-09-21 17:48:55 · 613 阅读 · 0 评论 -
缓存注解 Cachealble CacheEvict CachePut 浅谈,以及conditions和ulessSpEL表达式
在之前,我们采用的进程缓存可以是ConcurrentHashMap,加了锁的LinkedHashMap,WeakHashMap,以及Google guava Cache,需要自己定义或者实现缓存过期处理以及LRU等。这些本地有以下缺点:①和自己业务逻辑耦合度高。②难以整合其他的缓存方案。spring3之后可以通过注解来配置缓存。通过很少的代码就可以提供缓存功能,让代码变得更优雅。sprin原创 2016-08-04 10:14:42 · 7272 阅读 · 3 评论 -
REDIS学习(3.2)spring boot 使用redis作为缓存
在3.1的基础上修改RedisConfig@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport { @Bean public KeyGenerator smpkeyGenerator() { return new KeyGenerator() { @Overr原创 2016-08-03 14:49:07 · 5459 阅读 · 0 评论 -
Redis学习(3.1)spring boot整合Redis速成
spring boot redis原创 2016-08-03 14:11:04 · 7306 阅读 · 1 评论 -
REDIS学习(4)spring boot redisTemplate 对REDIS的简单封装,以及对引用包的说明,以及对序列化的详细说明
综合1,2,3以及目前,我们所引用的redis包不过是 org.springframework.boot spring-boot-starter-redis 添加进来后引用包至少有spring-boot-starter-redis-1.3.5.RELEASE.jarspring-data-redis-1.6.4.RELEASE.jarjedis-2.7.原创 2016-08-10 17:28:40 · 30485 阅读 · 0 评论 -
REDIS学习(6)查看redis状态,以及rdb和aof两种持久化方案的区别
在控制台输入info命令回车可以得到以下的信息(也可以用 redis clients分别查找信息)redis_version:3.2.3服务器版本redis_git_sha1:00000000redis_git_dirty:0redis_build_id:78f5751fe6f1a0f3redis_mode:standaloneos:Linux 2.6.32-431.23.原创 2016-09-07 11:44:56 · 6906 阅读 · 3 评论 -
(转自微博) 分布式缓存架构基础
文章不错,与大家共享之文章转自点击打开链接对于构建高性能、高可用的大型互联网系统,缓存是不可或缺的组成部分,微博的架构体系也是构建于缓存之上。本次课程介绍分布式缓存的相关知识,希望通过本次课程大家对分布式缓存有一定的了解,主要包含以下方面的内容:缓存概述、常用缓存介绍、分布式缓存实现、分布式缓存设计实践。一、缓存概述1.1 什么是缓存 缓转载 2016-09-23 15:56:43 · 1810 阅读 · 1 评论 -
Redis内部数据结构总结(1)sds和robj
SDSsds是redis中被广泛使用的字符串结构,不过redis的底层是先一层robj,再细化为sds或者long①sds的全称是simple dynamic string,它可动态扩展内存。sds表示的字符串内容可以修改和追加。②sds是二进制安全的,sds能存储任意二进制数据,而不仅仅是打印字符串。③与传统的c语言字符串兼容。sds的类型定义是一个字符数组和一个header原创 2016-11-04 17:04:15 · 1599 阅读 · 0 评论 -
Redis内部数据结构总结(3)ziplist
redis对外的数据结构hash的底层是ziplist或者dict。 ziplist是一个经过特殊编码的双向链表,其设计目的就是为了提高存储效率。ziplist可以用于存储字符串或正数,其中整数是按真正的二进制表示进行编码的,而不是编码成字符串序列。 ziplist提高了存储效率,是内存紧缩的列表,多个数据在一起的连续空间,不擅长修改,在两端pop,push快。原创 2016-11-04 11:22:45 · 3594 阅读 · 0 评论 -
Redis内部数据结构总结(4)quicklist
redis对外的数据结构类型list的底层是quicklistlist支持的操作有O(1)时间复杂度的lpush:在左侧(即列表头部)插入lpop:在左侧(即列表头部)删除rpush:在右侧(即列表尾部)插入rpop:在右侧(即列表尾部)删除。。。O(N)复杂度的lindex:取某个位置的元素linsert:在某个元素前后插入。。。一个有序列表,原创 2016-11-03 16:20:15 · 1292 阅读 · 0 评论 -
Redis内部数据结构总结(5)skiplist
redis的sorted set 底层是由skiplist,dict,ziplist来实现的。在reids.config中有两个配置zset-max-ziplist-entries 128zset-max-ziplist-value 64redis的内部结构skiplist采用的跳跃表,并对其做了一定改动。哈希表,平衡树和跳跃表都可以用来查询。其中平衡树和跳跃表使有序的原创 2016-11-02 00:02:05 · 1130 阅读 · 0 评论 -
REDIS学习(2)常用命令
一些常用命令自增 incr a删除 del a设置 set a "nihao"获得 get a设置expire时间,单位为妙 expire a 60查看剩余时间,单位为秒,-2为不存在,-1为永不超时TTL a列表list> RPUSH frends "alice"> rpush frends "monica"> lpush frends "sab原创 2016-08-02 22:22:38 · 475 阅读 · 0 评论 -
REDIS (15)手写Java Redis客户端(1)RESP协议分析(未完)
一直对Jedis有点兴趣, 现在静下心来抽空看看redis客户端和消费端是怎么连接的1. 对Jedis的get命令抓包发送接收可见是明文协议,0d 0a 是 \r\n我们找下文档redis 序列化协议2. 模仿协议内容发送并接收内容2.1 传统BIO的写法public static void main(String[] args) throws Exception { ...原创 2018-12-12 00:29:05 · 1370 阅读 · 2 评论