logo资料库

Redis介绍与实现(公司内部请培训机构的课件).pdf

第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
资料共26页,剩余部分请下载后查看
Redis介绍与实现机制
Redis介绍
一、Redis特性 (一)存储结构 Redis是Remote Dictionary Server的缩写,它使用字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。 同大多数脚本语言中的字典一样,Redis字典中的键值除了可以是字符串,还可以是其他数据类型。Redis 支持的数据类型有 字符串、散列、列表、集合、有序集合。 (二)内存存储与持久化 Redis数据库的所有数据都存储在内存中。在一台普通的笔记本电脑上,Redis可以在1秒内读写超过十万个键值。Redis 也提供了持久化的支持,即将内存中的数据异步写入硬盘中,同时不影响继续提供服务。 (三)功能丰富 Redis在很多场合是名副其实的多面手,越来越多的人将其用作缓存、队列系统中。例如,Redis可作为缓存系统,并 且可以为每个键设置生存时间,生存时间到期后键会自动删除;Redis还支持“发布/订阅”的消息模式,等等 (四)简单稳定 在Redis中使用命令来读写数据,就相当于SQL语言之关系型数据库。并且Redis提供了几十种不同编程语言的客户端库, 这些库很好地封装了Redis命令,使得在程序中与Redis进行交互更加容易。 Redis是开源的,良好的开发氛围和严谨的版 本发布机制使得Redis的稳定版本更加可靠。 SQL语句: SELECT title FROM posts WHERE id=1 LIMIT 1 Redis中命令: HGET post:1 title
二、Redis数据类型 1.字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,例如存储用户的邮箱、JSON 化的对象甚至是一张图片。一个字符串类型键允许存储的数据的最大容量是512MB。 2.散列类型 Redis是采用字典结构以键值对的形式存储数据,而散列类型的键值也是一种字典结构,其存储了字 段和字段值的映射,但是字段值只能是字符串,不支持其他数据类型。散列类型适合存储对象。 3.列表类型 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某 一个字段。 4.集合类型 集合中的每个元素都是不同的,并且没有顺序。一个集合类型(set)键可以存储至多232-1个字段。 5.有序集合类型 在集合类型的基础上,使得我们可以获得最高(最低)的前N个元素、指定分数范围内的元素等与分 数有关的操作。
三、Redis常用命令 (0)启动 启动 Redis redis-server 检查Redis是否在工作 redis-cli (1)字符串 SET name "Tom" GET name SET counter 1000 INCR counter DECR counter APPEND name "Jack" GET name (2)散列类型 HMSET car name "volvo" color "black" price 20 HMGET car name HEXISTS car name HDEL car price (3)列表类型 LPUSH lists redis LPUSH lists mogodb RPUSH lists mysql LPOP lists RPOP lists LRANGE lists 0 10 (4)集合类型 SADD letters a SADD letters a b c SREM letters c d SMEMBERS letters SADD setA 1 2 3 SADD setB 2 3 4 SDIFF setA setB (5)有序集合 ZADD tutorials 1 redis 2 mongodb 3 mysql 3 mysql ZRANGE tutorials 0 10 WITHSCORES (6)事务 MULTI INCR likes INCR visitors EXEC (7)生存时间 SET session uuid11 EXPIRE session 20 TTL session (8)排序 LPUSH mylist 4 2 6 1 7 3 SORT mylist LPUSH mylistalpha a c e d c a SORT mylistalpha ALPHA (9)消息通知 PUBLISH redisChat "Redis is a great caching technique" SUBSCRIBE redisChat PUBLISH redisChat "Learn redis by tutorials point" Redis的底层通信协议对管道(pipelining)提供了支持,通 过管道可以一次性发送多条指令并在执行完成后一次性将结 果返回,当一组命令中每条命令不依赖于之前命令的执行结 果时就可以将这组命令一起通过管道发出,管道可以减少客 户端与Redis的通信次数来实现降低往返时延累计值的目的。
Redis数据结构与对象 简单动态字符串、链表、跳跃表、字典、压缩列表、整数集合;对象
一、Redis数据结构—简单动态字符串(SDC) Redis没有直接使用C语言传统的字符串表示,而是自己构建了名为简单动态字符串(simple dynamic string ,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。 除了用来保存数据库中的字符串值之外,SDS还被用作缓冲区,例如AOF模块中的AOF缓冲区、客户端状 态中的输入缓冲区等。
一、 Redis数据结构—简单动态字符串(SDC) 与C字符串的区别: (1)常数复杂度获取字符串长度 (2)杜绝缓冲区溢出 (3)减少修改字符串时带来的内存重分配次数(空间预分配、惰性空间释放)
分享到:
收藏