网站开发总体功能设计,sae wordpress主题,科技服务网站建设内容,中国制造网外贸平台网址一、redis简介 redis是一款基于C语言编写的#xff0c;开源的非关系型数据库#xff0c;由于其卓越的数据处理机制#xff08;按照规则#xff0c;将常用的部分数据放置缓存#xff0c;其余数据序列化到硬盘#xff09;#xff0c;大家也通常将其当做缓存服务器来使用。…一、redis简介 redis是一款基于C语言编写的开源的非关系型数据库由于其卓越的数据处理机制按照规则将常用的部分数据放置缓存其余数据序列化到硬盘大家也通常将其当做缓存服务器来使用。 在很多时候大家还认为其只是一个key-value数据库服务器。然而redis还支持多种数据类型的存储应用范围也更加广泛 redis支持的数据类型有string字符串。list列表hash哈希set集合及zset(sorted set有序集合)。 redis支持数据持久化每隔一段时间会将内存中的数据写入粗盘如果机器故障重启还可以将硬盘的数据反写会内存保证了告诉处理数据操作的同事增加了数据的安全性同时也支持数据数据库的主从复制、发布订阅、事务支持、管道和虚拟内存 二、redis优势 和其他nosql相比redis的性能会更加卓越同时支持排名集合计算消息队列等操作。 三、redis和memcached的区别 1、两者都是内存数据库效率方面差别不大 2、redis不仅仅支持key-value数据格式还支持list、set、hash等数据结构的存储 3、memcached是基于内存的key-value缓存服务器完全基于内存如果不考虑异常关机造成数据丢失的情况下可以考虑但是redis可以做数据持久化因而数据安全性方面没有redis做的好 4、redis可以做故障恢复将数据从硬盘恢复到内存 5、redis支持数据备份即主从备份 四、redis的安装 五、redis数据类型 1、string字符串 string是redis最基本的数据类型存取方便可以存储一切可以序列化的数据对象取出后可以反序列化为存储之前的数据对象进行使用 在实际操作中通过set存储get获取name即为key值liming为存储对象 注意value存储最大数据为512M 使用场景常规key-value缓存应用。常规计数: 微博数, 粉丝数。 127.0.0.1:6379 set name liming
OK
127.0.0.1:6379 get name
liming2、list列表 list是数据列表格式按照顺序插入数据也可以插入数据到列表的头部或者尾部在实际操作中是通过lpust来存储数据列表。lrange来获取数据列表取出一个值后则在当前队列中消失 基本语法存储lpush key value 例如127.0.0.1:6379 lpush list C#获取lrange key 查询索引开始 查询索引结束例如127.0.0.1:6379 lrange list 0 2 列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。 Redis list的实现为一个双向链表即可以支持反向查找和遍历更方便操作不过带来了部分额外的内存开销Redis内部的很多实现包括发送缓冲队列等也都是用的这个数据结构。 Redis的list是每个子元素都是String类型的双向链表可以通过push和pop操作从列表的头部或者尾部添加或者删除元素这样List即可以作为栈也可以作为队列。 应用场景list的应用场景非常多也是Redis最重要的数据结构之一比如twitter的关注列表粉丝列表等都可以用Redis的list结构来实现。 127.0.0.1:6379 lpush list redis
(integer) 1
127.0.0.1:6379 lpush list rabbitMQ
(integer) 2
127.0.0.1:6379 lpush list sql
(integer) 3
127.0.0.1:6379 lpush list C#
(integer) 4
127.0.0.1:6379 lpush list python
(integer) 5
127.0.0.1:6379 lpush list java
(integer) 6
127.0.0.1:6379 lrange 0 2
(error) ERR wrong number of arguments for lrange command
127.0.0.1:6379 lrange list 0 2
1) java
2) python
3) C#3、hash哈希 hash 是一种key-value 键值对集合类似数据字典通过hmset 来存储hget来获取 语法hmset 哈希名称 key1 value1 key2 value2 …… 例如127.0.0.1:6379 hmset myhash name1 licy name2 lili name3 hanmeimei 每个 hash 可以存储 232 -1 键值对40多亿。 使用场景存储部分变更数据如用户信息等。 127.0.0.1:6379 hmset myhash name1 licy name2 lili name3 hanmeimei
OK
127.0.0.1:6379 hget myhash1 name1
(nil)
127.0.0.1:6379 hget myhash name1
licy
127.0.0.1:6379 4、set集合 set集合是一种无序的数据集合添加用 sadd获取用smembers添加成功则返回1已经存在则返回0添加失败则返回错误信息 语法存储 sadd 集合名称 数据值例如127.0.0.1:6379 sadd myset redis 获取smembers 集合名称例如127.0.0.1:6379 smembers myset 注集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。 应用场景求交集求差集求并集获取某时间段内的数据去重 127.0.0.1:6379 sadd myset redis
(integer) 1
127.0.0.1:6379 sadd myset C#
(integer) 1
127.0.0.1:6379 sadd myset java
(integer) 1
127.0.0.1:6379 sadd myset python
(integer) 1
127.0.0.1:6379 smembers myset
1) java
2) C#
3) redis
4) python5、zset有序集合 zset是一种有序集合和string类似多了个增加分数获取时会按照分数小到大进行数据返回 key值是唯一的但是分数可以重复 语法存储 zadd 集合名词 分数 数据值 例如127.0.0.1:6379 zadd myzset2 3 sql获取 ZRANGEBYSCORE 集合名称 索引开始 索引结束例如127.0.0.1:6379 ZRANGEBYSCORE myzset2 0 10 应用场景显示最新的列表数据项目排行榜应用获取top N操作求交集求差集求并集获取某时间段内的数据去重 127.0.0.1:6379 zadd myzset2 3 sql
(integer) 1
127.0.0.1:6379 zadd myzset2 1 C#
(integer) 1
127.0.0.1:6379 zadd myzset2 2 python
(integer) 1
127.0.0.1:6379 zadd myzset2 0 redis
(integer) 1
127.0.0.1:6379 ZRANGEBYSCORE myzset2 0 10
1) redis
2) C#
3) python
4) sql
127.0.0.1:6379 六、redis功能 1、发布订阅 redis的发布订阅是一种消息通讯模式发布者发送消息接收这接受消息客户端可以任意定义频道redis客户端可以任意订阅频道 下图展示了频道 channel1 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系 当有新消息通过 PUBLISH 命令发送给频道 channel1 时 这个消息就会被发送给订阅它的三个客户端 实例订阅者 127.0.0.1:6379 SUBSCRIBE fabu1
Reading messages... (press Ctrl-C to quit)
1) subscribe
2) fabu1
3) (integer) 1
1) message
2) fabu1
3) my fa bu 发布者 127.0.0.1:6379 PUBLISH fabu1 my fa bu
(integer) 1
127.0.0.1:6379 2、持久化 由于redis的数据是存放在内存中如果没有持久化redis重启或者服务器重启数据会丢失于是需要开启redis的持久化功能用于将数据保存在硬盘上当redis重启后可以从硬盘中恢复数据。 redis提供两种方式进行持久化一种是RDB持久化原理是将redis中在内存中的数据记录定时dump到硬盘上的RDB持久化另一种是AOD持久化原理是将redis的操作日志以追加的方式写入文件 3、redis的主从复制 一般来说一台redis可以处理的数据是有限的即使硬件支持很好也无法满足日益增长的业务需求因而redis提供了主从集群的功能可以实现读写分离极大限度的提高了系统的性能和满足业务的拓展。同时为了避免一台redis服务器宕机而引起的系统崩溃redis也提供了启用sentinel(哨兵)服务在一台服务器宕机是自动切换到另外一台从服务器同时设置当前的从服务器为主服务器 4、redis事务 在系统中经常会遇到很多零散的操作有很强的顺序性一旦中间某个操作异常或者服务器异常等其他情况因而就需要事务来处理 redis事务可以一次执行多个命令redis会将事务中的命令序列化然后按照顺序执行。redis事务不可能在事务执行的过程中插入另外一个客户端发来的命令请求这样便保证了命令执行的过程中进行隔离单独执行。在redis事务中要么执行所有命令要么一个都不执行 一个事务从开始到执行共有三个阶段 a、事务开始 b、命令入列 c、执行事务 5、redis管道 6、redis虚拟内存 七、redis总结 redis是高性能的缓存服务器解决方案可以数据持久化和快速搭建集群高并发高可用性 参考地址http://www.cnblogs.com/caokai520/p/4409712.html转载于:https://www.cnblogs.com/happygx/p/8411134.html