Redis基础知识及集群搭建课件

合集下载

Redis技术分享精品PPT课件

Redis技术分享精品PPT课件
字符串类型是其它四种数据类型的基础,其他数据类型是 组织字符串的不同形式。
常用命令集:
EXPIRE命令介绍
设置一个键的生存时间,到时间后Redis会自动删除它 EXPIRE key seconds 参数表示键的生存时间,单位是秒 SET sessioon:29e3d uid1314 EXPIRE session:29e3d 900 返回0则表示不存在,返回1表示设置成功。 TTL session:293d 返回值是剩余时间(单位是秒)不
Redis大数据之路
主题内容
Redis介绍 数据类型。 发布与订阅 复制(Replaction) 持久化 事务 集群 Java客户端(Jredis)Spring整合
Redis介绍
Redis 它是一个开源的高性能的键值对数据库。意大利公 司 M e r z i a 公 司 于 2008年开发,09年完成, 同 年 开源) , 据 12年调查已有12%的大型应于在使用。例如:国外,GitHub 、Overflow;国内,知乎和新浪微博等。
使用双向列表,获取越接近两端的元素速度就越快。代价 是通过索引访问元素比较慢。比较适合记录日志。
集合类型
特点每个元素都是不同的,且没有顺序。一个集合类型( set)键可以存储2^32-1个字符串。
集合和列表类型有相似之处。 集合类型在Redis内部是使用值为空的散列表(hash
table)实现的,所以这些操作的时间复杂度都是0(1),最 方便的是多个集合类型之间还可以进行并集、交集和差集 运算。
命令列表
有序集合
虽然集合中每个元素都是不同的,但是 (2)二者都可以获得某一范围的元素。 区别: (1)列表类型是通过链表实现的,获取靠近两端的数据
速度极快,而当元素增多后,访问中间数据的速度会较慢, 所以它更加适合实现如新鲜事或日志这样很少访问中间元 素的应用。

《redis讲解》PPT课件

《redis讲解》PPT课件

$$1redis简介
三、redis与memcache的优缺点 1 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可 以再次加载进行使用。 2 、Redis不仅仅支持简单的string类型的数据,同时还提供list,set,hash等 数据结构的存储。 3 、Redis支持数据的备份,即master-slave模式的数据备份。 4、内存超出时redis将不常用缓存swap到 磁盘。 5、redis支持集群,添加节点删除节点不丢数据 6、redis是单线程
例子 expire key sexonds expireat key timestamp
ttl key
pttl key randomkey type key
$$3redis的持久化
Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启 之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化 。
$$2redis数据类型
二、hash类型
1、hash叫散列类型,它提供了字段和字段值的映射。字段值 只能是字符串类型,不支持散列类型、集合类型等其它类型。如下:
$$2redis数据类型
命令 hset hget hexists hlen hdel hgetall
hmset
hmget hsetnx
hincrby hkeys
$$2redis数据类型
命令
描述
例子
zadd
添加成员
zadd key score member [score member..]
zcard
获取成员数量
zcard key
zcount
获取指定分数之间的成员数 zcount key min max 量

redis简介精品PPT课件

redis简介精品PPT课件

NOSQL数据库
Redis简介
• Redis是一个使用ANSI C语言编写的开源数据库
• 高性能的 key-value数据库
• 内存数据库,支持数据持久化
• 提供了Java,C/C++,C#,PHP,JavaScript, Perl,Object-C,Python,Ruby,Erlang等客户端
内存数据库与磁盘数据库
优势
缺点
典型代表
磁盘数据库
•机制成熟、可靠
•占用、消耗的系统资源较多; MySQL、MSSQL
•提供强大的数据定义语言及数据操作语 •数据存取的速度慢;
言,提供SQL支持;
•数据存取时间不一致且难以预
•提供一定的主动机制(如触发器, 测
Trigger)和后台数据处理能力(如存储
• 一种是在传统的数据库中,增大缓冲池,将 一个事务所涉及的数据都放在缓冲池中,组 织成相应的数据结构来进行查询和更新处理 ,也就是常说的共享内存技术,这种方法优 化的主要目标是最小化磁盘访问。
• 另一种就是内存数据库(MMDB:Main Memory Database,也叫主存数据库)技术 ,近乎把整个数据库放进内存中,因而会产 生一些根本性的变化。
Key 相关命令
• exists key 测试指定key是否存在,返回1表示存在 • del key1 key2... keyN 删除给定key,返回删除key的数目,0
表示给定key都不存在 • type key 返回给定key的value类型,返回none表示不存在。 • keys pattern 支持*,等正则符号。
写性能。
KV or RDB
用户登录信息表 - 关系型数据库设计

《redis介绍》PPT课件

《redis介绍》PPT课件
▪ 主-从复制
Redis支持简单而快速的主-从复制。官方提供了一个数据,Slave在21 秒即完成了对Amazon网站10G key set的复制。
▪ Sharding
很容易将数据分布到多个Redis实例中,但这主要看该语言是否支持。 目前支持Sharding功能的语言只有PHP、Ruby和Scala。
▪ 持久化 由于所有数据保持在内存中(2.0版本开始可以只将部分数据的value放 在内存,见“虚拟内存”),所以对数据的更新将异步地保存到磁盘 上,Redis提供了一些策略来保存数据,比如根据时间或更新次数。
▪ 数据结构 可以将Redis看做“数据结构服务器”。目前,Redis支持5种数据结构。
Page ▪ 8
一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。 ▪ *rdbcompression:是否使用压缩 ▪ *dbfilename:数据快照文件名(只是文件名,不包括目录) ▪ *dir:数据快照的保存目录(这个是目录) ▪ *appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数
▪ list的最大长度是2^32-1个元素
Page ▪ 12
12
set类型
▪ set就是redis string的无序集合,不允许有重复元素 ▪ set的最大元素数是2^32-1 ▪ 对set的操作还有交集、并集、差集等
Page ▪ 13
13
zset类型
▪ zset是set的一个升级版本,在set的基础上增加了一个顺序 属性,这一属性在添加修改元素时可以指定,每次指定后 zset会自动安装指定值重新调整顺序。可以理解为一张表, 一列存value,一列存顺序。操作中的key理解为zset的名字。

Redis-cluster集群搭建

Redis-cluster集群搭建

Redis-cluster集群搭建1 Redis-cluster集群1.1 哨兵模式的缺陷在哨兵模式中,仍然只有⼀个Master节点。

当并发写请求较⼤时,哨兵模式并不能缓解写压⼒。

我们知道只有主节点才具有写能⼒,那如果在⼀个集群中,能够配置多个主节点,是不是就可以缓解写压⼒了呢?答:是的。

这个就是redis-cluster集群模式。

1.2 Redis-cluster集群概念(1)由多个Redis服务器组成的分布式⽹络服务集群;(2)集群之中有多个Master主节点,每⼀个主节点都可读可写;(3)节点之间会互相通信,两两相连;(4)Redis集群⽆中⼼节点。

1.3 集群节点复制在Redis-Cluster集群中,可以给每⼀个主节点添加从节点,主节点和从节点直接遵循主从模型的特性。

当⽤户需要处理更多读请求的时候,添加从节点可以扩展系统的读性能。

1.4 故障转移Redis集群的主节点内置了类似Redis Sentinel的节点故障检测和⾃动故障转移功能,当集群中的某个主节点下线时,集群中的其他在线主节点会注意到这⼀点,并对已下线的主节点进⾏故障转移。

集群进⾏故障转移的⽅法和Redis Sentinel进⾏故障转移的⽅法基本⼀样,不同的是,在集群⾥⾯,故障转移是由集群中其他在线的主节点负责进⾏的,所以集群不必另外使⽤Redis Sentinel。

1.5 集群分⽚策略Redis-cluster分⽚策略,是⽤来解决key存储位置的。

集群将整个数据库分为16384个槽位slot,所有key-value数据都存储在这些slot中的某⼀个上。

⼀个slot槽位可以存放多个数据,key的槽位计算公式为:slot_number=crc16(key)%16384,其中crc16为16位的循环冗余校验和函数。

集群中的每个主节点都可以处理0个⾄16383个槽,当16384个槽都有某个节点在负责处理时,集群进⼊上线状态,并开始处理客户端发送的数据命令请求。

Redis精品PPT课件

Redis精品PPT课件

unsigned type:4
void *ptr
void *ptr
...
key
...
value
• redisObject可以看成是对要存储的各种对象(如String 、List、Set等)的抽象,type(长4bit的整数)用于标识 该对象所属的数据结构的种类,ptr指向对象在内存中的 地址。
一次查询流程
redis
• 背景 • Redis简介
– Redis是什么 – 功能与特点
• 内部实现(单机)
– 整体数据框架 – 基本数据结构 – 优化机制
• 索引优化 • 内存优化
– 持久化
目录
• 主从备份 • 集群 • Key-value数据库设计 • 与其他数据库对比 • Redis不足 • 应用场景
背景
• 国际上最大的redis用户是谁?在众多的NOSQL数据库与 传统的关系数据库中为什么会出现redis?
• 传统的key-value数据库(文档,string类型)有什么不 足?----数据结构需求
• 传统的关系型数据库IO操作性能问题?----性能需求 • 传统的内存数据库有什么不足?---可靠性需求
dictht dictEntry **table usigned long size usigned long used ...
0
1
... size-1
dictEntry void *key void *val *next
NULL
NULL
• 双重指针table指向一个数组,该数组记录各个dictEntry (条目?)的入口地址。size为table的大小,used是 dictEntry的个数。
Redis简介

redis快速入门详解PPT

redis快速入门详解PPT

Redis配臵
• 1. Redis默认不是以守护进程的方式运行,可以通过该配臵项修改,使用yes启用 守护进程 • daemonize no • 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文 件,可以通过pidfile指定 • pidfile /var/run/redis.pid • 3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什 么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取 自意大利歌女Alessia Merz的名字 • port 6379 • 4. 绑定的主机地址 • bind 127.0.0.1 • 5.当 客户端闲臵多长时间后关闭连接,如果指定为0,表示关闭该功能 • timeout 300 • 6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、 warning,默认为verbose • loglevel verbose
Redis配臵
• 21. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据 分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由 磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制) • vm-enabled no • 22. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享 • vm-swap-file /tmp/redis.swap • 23. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设 臵多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当 vm-max-memory设臵为0的时候,其实是所有value都存在于磁盘。默认值为0 • vm-max-memory 0 • 24. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面, 但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来 设定的,作者建议如果存储很多小对象,page大小最好设臵为32或者64bytes; 如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值 • vm-page-size 32 • 25. 设臵swap文件中的page数量,由于页表(一种表示页面空闲或使用的 bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。 • vm-pages 134217728
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HSET KEY FILED VALUE HMSET KEY FILED VALUE [FILED1] [VALUE] HGET KEY HMGET KEY [KEY] HKEYS KEY HVALS KEY HGETALL KEY HDEL FILED [FILED] HLEN HEXISTS key filed
字符串类型 链表类型 哈希类型 集合类型 有序集合类型
String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类。 当然,也可以存储图片,视频等序列化对象,Value最多可以容纳的数据长度 是512M。
1.赋值: 2.取值: 3.字符串操作: 4.数字操作: 5.其他:
SET KEY VALUE MSET KEY1 VALUE1 [KEY] [VALUE2]
场景:COC中将符合标签的用户进行聚类,存放到Set中,比如set1 存放学生
标签用户、set2存放低消费用户、set3存放非合约用户,那么取出可能购买小
米的低消非合约学生用户群:
1.SINTERSTORE aset set1 set2
2.SDIFF aset set3
有序集合中也不允许有重复数据,它比Set多了一个score,Redis正是通过 score来为集合中的成员进行从小到大的排序。需要注意的是,尽管SortedSets中的成员必须是唯一的,但是分数(score)却是可以重复的。
1.查询:Leabharlann ZADD KEY SCOREN MBR1 … SCOREN MBRN
2.删除:
ZREM KEY MBR1 MBR2 …MBRN
3.取前几位/后几位:
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
INCRBY KEY decrement /DECRBY KEY decrement
SETEX KEY SECONDS KEY VALUE
List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样, 我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并 不存在,Redis将为该键创建一个新的链表。
场景:AIOP中用户标签信息使用HASHMAP存储,存储结构为user:phone tag1 val1 tag2 val2 ,AIOP传递客户手机号,即可通过HGET user:phone tag1 tag2 取出标签值。
在Redis中,我们可以将Set类型看作为没有排序的字符集合,就像什锦果冻, 只是聚集在一起,没有顺序,这和List类型不一样,另外要注意Set集合中不允 许出现重复的元素,而且Set支持多个Sets之间的差、并、交集操作。
与关系型数据库比较
——redis由于其存储结构相对简单,因此并不能对复杂的逻辑关系提供很 好的支持,然而在适用于Redis的场景中,我们却可以由此而获得效率上的 显著提升。
作为NOSQL数据库之一的redis,除了支持基本key-value方式,还支持结构 化存储,以适应各类应用场景:
String: List: Hashes: Set: Sorted-Sets
场景:LIST可以作为消息队列,LPUSH链表头作为生产者插入消息,RPOP作 为消费者取得消息。
我们可以将Redis中的Hashes类型看成具有String Key和String Value的 map容器。所以该类型非常适合于存储值对象的信息。
1.赋值: 2.取值:
3.删除: 4.取长度: 5.存在判定:
目录
1 Redis基础知识 2 Redis集群搭建
Redis是什么?
——Redis,典型的NoSQL数据库服务器,采用KEY-VALUE存储结构,可 以作为服务程序独立运行于自己的服务器主机,同时作为内存数据库,不 用IO读取硬盘数据,能够快速响应请求。
Redis有什么特点?
——支持持久化、支持多种数据结构、支持主从复制、免费
以上各类数据类型的操作全部是针对于KEY关联的value操作,redis也提供了 单独对key值的操作
匹配: 删除: 是否存在: 键值迁移: 查看数据类型: 设置超时: 取消超时:
String
SETBIT KEY OFFSET 1/0 GET KEY MGET KEY1 [KEY] GETBIT KEY OFFSET
LEN BUF[] FREE
STRLEN KEY
SETRANGE KEY OFFSET VALUES
GETRANGE KEY START END
INCR KEY
DECR KEY
4.统计数量: ZCOUNT key min max
5.取分数:
ZSCORE key member
场景:可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时, 可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP TEN的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家 的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩 家积分相近的其他用户的信息。
1.赋值: 2.取值:
3.INDEX操作: 4.取长度: 5.截取:
LPUSH/RPUSH KEY V1 V2 …VN LPUSHX/RPUSHX KEY VALUE LPOP/RPOP KEY LRANGE KEY START END GETBIT KEY OFFSET LSET key index value LINDEX KEY index LLEN KEY LTRIM key start stop
1.新增: 2.查询:
3.删除: 4.取长: 5.存在判定: 6.聚合运算:
SADD KEY M1 M2… SMEMEBERS KEY SPOP KEY SRANDMEMBER KEY
SREM KEY M1 M2…MN SCARD KEY SISMEMBER KEY MEMBER SDIFF KEY1 KEY2 … SINTER KEY1 KEY2 … SUINON KEY1 KEY2…
相关文档
最新文档