`
gaddma
  • 浏览: 17361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis自我学习笔记和收藏

阅读更多

听说Redis已经很长时间,大多数时候都是按照memcache的缓存的方式使用它。

 

但是听说几种场景用redis实现比较好。

目前需要掌握的场景:

1,分布式锁(比如核心资源的竞争和分布式的同步)

2,分布式计数器(比如秒杀)

 

写一个学习笔记,持续更新学习状况

 

redis最经典的应该就是所谓的原子性了,因为原子性所以可以实现上述的功能。

 

基础内容

按照redis官网和redis中文网的文档挨个学习。

http://www.redis.cn/

http://redis.io/

试验了redis的命令行客户端的操作和相关命令。

命令列表网址为:http://redis.io/commands

 

学习使用了15分钟教程系统介绍 ,熟悉了Redis的几种数据结构。

1,list

2,set

3,排序的set

4,hash(还需要继续学习)

以及几种简单的模式

1,订阅和发布。简单理解就是消息队列

2,超时

3,事务队列

对持久化、分布式、主从复制的功能研究还有待继续。

但是听说持久化会stop world,本身不支持分布式(必需通过其他组件来支持分布式的分发和一致性哈希),主从复制的时候会清空slave的数据(不支持增量数据)。

把听说的几篇文章贴下,省的以为我黑它……

 

分布式方案文章:

http://www.cnblogs.com/lulu/archive/2013/06/10/3130878.html

http://www.oschina.net/translate/utopian-redis-cluster

 

 

主从复制

http://www.cnblogs.com/zhoujinyi/archive/2013/05/27/3098447.html

(这个学习笔记不错)

 

 

 

 

 

关于场景使用

http://blog.nosqlfan.com/html/2235.html

http://www.tuicool.com/articles/zeYfyq

1,分布式锁

推荐

http://www.jeffkit.info/2011/07/1000/

http://phl.iteye.com/blog/2029944

顺便+上自己的一段思考

学习了很不错

因为JAVA的实现和伪代码的实现有所不同,所以仔细对比了一下
伪代码是通过  当前时间  和  getset返回的库里面的时间对比  判断谁应该拿到锁。
JAVA实现是通过 对比两次get 和 getset的返回值的不同,来判断谁应该拿到锁。

两种实现在大多数情况都不会出问题,但是也有失败的情况
1,伪代码失效的情况是 设置超时时间和get的网络开销不相上下的时候。这样容易让一行三次获取数据最后导致成功,很容易让锁失效,替代前一个锁,不过这不算问题,因为设置过小的锁超时时间本身就是程序bug,而且就算这种情况也可以保证每个获取锁的节点依次的进入锁。

2,JAVA实现的失效的情况是,两台完全同步的机器,每步代码执行的速度都一样,有可能让多个节点同时拿到锁。

个人比较赞同伪代码中的实现。
原因是伪代码 如果超时时间设置合理的话,后续的节点最多会把超时时间延迟个几个毫秒,但是后续的节点都不会拿到锁。

建议修改~

 

2,分布式计数器

 

淘宝秒杀100件商品

思路是使用incr原子操作,

使用获取的返回值,判断是否超过范围,如果在范围内的话就开始做业务逻辑处理,如果不在范围内的话,就可以直接返回错误页面了。高并发没办法控制精确到哪一位,这样就控制50个进入范围,在这50个按照业务规则筛选出win的用户就可以了。

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Redis全套学习笔记 (带章节目录) 完整版pdf

    Redis,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。...本文适合Redis初学者和进阶者阅读,是一份全面而实用的学习笔记。

    Redis全套学习笔记-带章节目录-114页.pdf

    Redis全套学习笔记 Redis是一种基于内存的NoSQL数据库,具有高性能、可扩展性和灵活性等特点。以下是Redis的详细知识点: 安装和启动 * 安装Redis可以通过下载软件包或使用yum、apt-get等安装工具进行安装。 * ...

    Redis全套学习笔记 完整版pdf.rar

    Redis全套学习笔记 完整版pdf.rar set:添加键值对 get:获取值 apend:追价值 strlen:获取值的长度 setnx:key不存在时,设置key的值 incr:原子递增1 decr:原子递减1 incrby/decrby:递增或者递减指定的数字 ...

    Redis全套学习笔记

    它支持多种数据结构,包括字符串(String)、链表(List)、哈希(Hash)、集合(Set)和有序集合(Zset),这些丰富的数据结构使得Redis在缓存、计数、发布订阅系统等多种场景下表现出色。 1. Redis 概述与安装: Redis ...

    Redis学习笔记.pdf

    Redis集群的建立和管理可以进一步提升数据库的高可用性和扩展性,支持数据分片和负载均衡。 在分布式系统中,Redis可用于实现分布式Session管理,提高系统的可扩展性和灵活性。通过合理的配置和使用Redis的特性,...

    redis的学习笔记 redis.pdf

    Redis是一个开源的高性能Key-Value数据库系统,其全称为Remote Dictionary Server。...随着进一步的学习和实践,开发者们可以更加深入地掌握Redis的强大功能,并将其应用于各种应用场景中,为开发工作带来便利。

    Redis学习笔记整理

    二、 redis学习笔记之数据类型 3 三、 redis学习笔记之排序 11 四、 redis学习笔记之事务 16 五、 redis学习笔记之pipeline 20 六、 redis学习笔记之发布订阅 23 七、 redis学习笔记之持久化 28 八、 redis学习笔记...

    redis学习笔记

    redis学习笔记redis 是一个开源的 key-value 数据库。它又经常被认为是一个数据结构服务器。 因为它的 value 不仅包括基本的 string 类型还有 list,set ,sorted set 和 hash 类型。当 然这些类型的元素也都是 string...

    redis相关学习笔记

    redis相关学习笔记

    redis知识学习笔记

    redis知识学习笔记

    Redis数据库学习笔记

    Redis数据库学习笔记

    redis cmd 学习笔记

    redis cmd 学习笔记

    Redis原理学习笔记

    Redis原理学习笔记

    超详细的redis学习笔记

    ### 超详细的Redis学习笔记知识点汇总 #### 1. Redis 的启动与停止 ##### 1.1 直接启动 Redis 服务 - **默认端口启动**:使用 `$ redis-server` 命令,默认监听端口为 `6379`。 - **指定端口启动**:使用 `$ ...

    Redis学习笔记

    Redis学习笔记

    redis学习笔记.zip

    这个“redis学习笔记.zip”压缩包很可能是包含了关于Redis的学习资料,可能包括概念解释、操作教程、实践案例等内容,适合初学者和有一定基础的学习者参考。 Redis的学习可以分为以下几个主要部分: 1. **基础知识...

    redis学习笔记Redis.md

    ### Redis 学习笔记知识点概览 #### 一、Redis 概述与应用场景 ##### 1.1 NoSQL 数据库简介 - **定义**: NoSQL(Not Only SQL)泛指非关系型数据库,它们通常不使用传统的表格关系来存储数据。 - **特性**: NoSQL ...

    7.Redis学习笔记.pdf

    Redis不仅支持基本的键值对存储,还支持多种数据结构,包括字符串(strings)、散列(hash)、列表(list)、集合(set)、有序集合(sorted set)以及范围查询、位图(bitmaps)、超日志(hyperloglogs)和地理空间索引...

    redis的学习笔记markdown版本

    redis的学习笔记markdown版本

Global site tag (gtag.js) - Google Analytics