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

Redis之品鉴之旅(一) 好知识就如好酒,需要我们坐下来,静静的慢慢的去品鉴.Redis作为主流nosql数据库,在提升性能的方面是不可或缺的.下面就拿好小板凳,我们慢慢的来一一品鉴. 1)redis号称是大数据高并发的利器,那么到底什么是redis? redis是nosql(not only sql,不仅仅是sql语句),它提供了各种操作的api,不像我们的关系型数据库使用sql语句来操作数据库. redis全称Remote Dictionary Server(远程字典服务),首先是一个字典…
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…
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…
redis连接封装 StackExchange.Redis中有一些常功能是不在database对中,例如发布订阅.获取全部key(本代码中已封装到operation中了)等,而且StackExchange.Redis中使用一种多路复用器概念来建立连接对于使用者来说也是没有必要了解的: 所以将连接封装起来,让用户只关心业务才是对的. SERedisConnection 源代码可以点击这里查看 redis成长之路--(一) redis成长之路--(二) redis成长之路--(三) redis成长之…
Redis源码阅读(三)集群-连接建立 对于并发请求很高的生产环境,单个Redis满足不了性能要求,通常都会配置Redis集群来提高服务性能.3.0之后的Redis支持了集群模式. Redis官方提供的集群功能是无中心的,命令请求可以发送到任意一个Redis节点,如果该请求的key不是由该节点负责处理,则会返回给客户端MOVED错误,提示客户端需要转向到该key对应的处理节点上.支持集群模式的redis客户端会自动进行转向,普通模式客户端则只返回MOVED错误. 先看下常见的Redis集群结构:…
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置给定 key 的值.如果 key 已经存储其他值, SET 就覆写旧值,且无视类型. ') # 插入成功后返回True ','[123,dffd]') # 插入成功后返回True 2. Get 命令用于获取指定 key 的值.如果 key 不存在,返回 None .如果key 储存的值不是字符串类型,返回一个…