Redis之品鉴之旅(五)】的更多相关文章

Redis之品鉴之旅(一) 好知识就如好酒,需要我们坐下来,静静的慢慢的去品鉴.Redis作为主流nosql数据库,在提升性能的方面是不可或缺的.下面就拿好小板凳,我们慢慢的来一一品鉴. 1)redis号称是大数据高并发的利器,那么到底什么是redis? redis是nosql(not only sql,不仅仅是sql语句),它提供了各种操作的api,不像我们的关系型数据库使用sql语句来操作数据库. redis全称Remote Dictionary Server(远程字典服务),首先是一个字典…
Redis事务 原子性:就是最小的单位 一致性:好多命令,要么全部执行成功,要么全部执行失败 隔离性:一个会话和另一个会话之间是互相隔离的 持久性:执行了就执行了,数据保存在硬盘上 典型例子:银行转账,A给B转账100万,首先要A的账户减去100万,然后B的账户增加100万,如果中间断了那就出问题了.所以我们人为的将这件事进行原子化,做成一个最小单位.要么一起成功要么一起失败. redis是一种简单的数据存储形式,redis的事务是不支持回滚的. 之前的sqlserver的事务,开了一个事务,去…
分布式锁 1)阻塞锁: 尝试在redis中创建一个字符串结构缓存,方法传入的key,value为锁的过期时间timeout的时间戳. 若redis中没有这个key,则创建成功(即抢到锁),然后立即返回. 若已经有这个key,则先watch,然后校验value中的时间戳是否已经超过当前时间. 若已超过,则尝试使用提交事务的方式覆盖新的时间戳,事务提交成功(即抢到锁),然后立即返回: 若未超过当前时间或事务提交失败(即被别人抢到锁), 如果没有抢到锁,则进入 一个内部优化过的微循环,不断重试. //…
持久化 快照的方式(RDB) 文件追加方式(AOF) 快照形式: save和bgsave能快速的备份数据.但是.........., Save命令:将内存数据镜像保存为rdb文件,由于redis是单线程模型,期间会阻塞redis服务进程,redis服务不再处理任何指令,直到rdb文件创建完成为止. Bgsave命令:父进程启动一个子进程,由子进程将内存保存在硬盘文件,期间不会影响其他的指令操作. redis 后台保存数据文件的线程只会有一个. 这里先做标题,后续补充内容…
2)hash类型,上代码 using (RedisClient client = new RedisClient("127.0.0.1", 6379, "12345", 10)) { //删除当前数据库中的所有Key 默认删除的是db0 client.FlushDb(); //删除所有数据库中的key //client.FlushAll(); //大key string hashid = "pengbo"; #region 向hashid集合中添…
发布订阅,简单场景下的发布订阅完全可以使用. 可以简单的理解,将一个公众号视为发布者,关注公众号的人视作订阅者,公众号发布一条文章或者消息,凡事订阅公众号的都可以收到消息.一个人可以订阅多个公众号,一个公众号可以被多个人订阅. //创建一个公众号--创建一个主题 Console.WriteLine("发布服务"); IRedisClientsManager redisClientManager = new PooledRedisClientManager("127.0.0.1…
3)Set,可以去重的.无序的集合.可以取交集.并集.zset(sorted set),有序的.去重的集合,排序不是根据value排序,而是根据score排序. using (RedisClient client = new RedisClient("127.0.0.1", 6379, "12345", 10)) { //删除当前数据库中的所有Key 默认删除的是db0 client.FlushDb(); //删除所有数据库中的key //client.FlushA…
单例.哨兵.Cluster redis应用广泛,主要体现于实际场景的可用化,但是对于码农来说初步入手很多理念难以理解:码农的想法就是:为什么我要管那么多,我只想用,能用就行!所以必须将三个场景透明化. SERedisHelper就是将这些场景合并,让码农只关心业务的关键. 实例代码点击这里查看 redis成长之路--(一) redis成长之路--(二) redis成长之路--(三) redis成长之路--(四) redis成长之路--(五) redis成长之路--(六) redis成长之路--(…
Redis源码阅读(五)集群-故障迁移(上) 故障迁移是集群非常重要的功能:直白的说就是在集群中部分节点失效时,能将失效节点负责的键值对迁移到其他节点上,从而保证整个集群系统在部分节点失效后没有丢失数据,仍能正常提供服务.这里先抛开Redis实际的做法,我们可以自己想下对于Redis集群应该怎么做故障迁移,哪些关键点是必须要实现的.然后再去看Redis源码中具体的实现,是否覆盖了我们想到的关键点,有哪些设计是我们没有想到的,这样看代码的效果会比较好. 我在思考故障迁移这个功能时,首先想到的是节点…
redis数据类型分为:字符串类型.散列类型.列表类型.集合类型.有序集合类型.redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作.原子操作:最小的操作单位,不能继续拆分.即最小的执行单位,不会被其他命令插入.高并发下不存在竞态条件.KEY的命名:一个良好的建议是article:1:title来存储ID为1的文章的标题.一.前言.1.获取key的列表:KEYS pattern 通配符有?*[]和转义\2.key是否存在: EXISTS key 存在返回1,不…