redis之(二十)redis的总结一

1 什么是Redis

Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列。

Redis的特点:

  • Redis存在于内存,使用硬盘作为持久化;每秒十万读写。
  • 具有丰富的数据结构,字符串、哈希表、列表、集合、有序集合;提供交集、并集、差集等操作。
  • 设置TTL存活时间,到期自动删除。
  • Redis单线程、Memcached多线程;对于一般的应用场景,单线程也足够使用,优势还是在于多数据类型、持久化。
  • 可以将数据复制到任意数量的从服务器。

2 Redis中的数据结构

字符串

  • SET keyname value 设置键值keyname的值是value
  • KEYS * 获取所有的键值
  • GET keyname 获取keyname的值
  • EXISTS keyname 判断是否存在键值keyname
  • DEL keyname 删除键值keyname
  • TYPE keyname 判断keyname的类型(string字符串,hash哈希表,list列表,set集合,zset有序集合)

哈希表

  • HSET keyname key value 添加一个哈希属性和值
  • HGET keyname key 获取值
  • HKEYS keyname 获取全部的key值
  • HVALS keyname 获取全部的value值
  • HGETALL keyname 获取所有的值

列表

通过双向链表实现,头尾操作均为O(1),获取指定元素比较慢。

  • LPUSH keyname value1或者LPUSH keyname value1 value2 在左边插入
  • RPUSH keyname value2 在右边插入
  • LRANGE keyname 0 -1 查询所有的元素
  • LPOP keyname
  • RPOP keyname

集合

元素唯一,但是没有顺序。使用值为空的哈希表实现,操作都是O(1)。

  • SADD keyname value1 value2 添加值
  • SREM keyname value1 删除
  • SMEMBERS keyname查询所有元素

有序集合

使用哈希和跳跃表实现,中间速度也很快。

  • ZADD keyname key value 添加
  • ZRANGE keyname start end 获取指定范围的元素

与列表的比较:

相同:

  • 都是有序的
  • 都可以获取某一范围的元素

不同:

  • 列表通过双向链表实现,两端数据存取极快,中间缓慢
  • 有序集合通过哈希和跳跃表实现,中间速度也很快,为O(log(N))
  • 列表不能简单地调整某个元素的位置,有序集合可以
  • 有序集合比列表更好费内存

3 Redis持久化

Redis提供了两种持久化方式:1 RDB快照方式 2 AOF方式

RDB方式:

满足一定条件时,会创建一个子进程,复制当前的数据,把数据写入到硬盘中某个文件,写入完成后替换原来的存储文件。数据一般存储在dump.rdb中。UNIX系统中支持写时复制,即刚开始会执行持久化写入磁盘的操作,如果此时有其他的数据发生改变,就复制一份数据执行。

除了这种自动的快照方式,还支持命令方式持久化:

  • SAVE:通过阻塞的方式,用父进程来持久化,此时无法执行其他的请求。
  • BGSAVE:通过fork子进程的方式,持久化。

AOF方式:

每次操作都会记录命令,这样会造成某些命令的冗余,比如添加了一个属性,再删除,那么这两个操作都是冗余的。redis提供了一些优化,所以可以避免这些冗余信息。命令记录在appendonly.aof中

4 Redis的消息队列

Redis用于消息队列,通常有两种种使用方式:

LIST:基于列表的方式,所有的消费者数据加起来是列表中的所有数据.

发布/订阅:每个消费者订阅独立的channel,每个数据都是独立的。

时间: 2024-09-22 08:51:48

redis之(二十)redis的总结一的相关文章

redis之(十二)redis数据的持久化

[一]redis的数据为什么要持久化 --->redis的存取数据性能高,是由于将所有数据都存储在内存中.当redis重启的时候,存储在内存中的数据就容易丢失. --->把redis作为数据库使用. --->把redis作为缓存服务器,但缓存被穿透后会对性能造成很大的影响,所有缓存同时失效会导致缓存雪崩,从而使服务无法响应. --->因此我们希望redis能将数据从内存中以某种形式同步到硬盘,使得重启后可以根据硬盘中的纪录恢复数据,这一过程就叫做持久化   [二]redis的持久化

redis(二)主从复制

一.Redis的Replication: Redis中配置Master-Slave模式非常简单,下面的列表清楚的解释了Redis Replication的特点和优势. 1). 同一个Master可以同步多个Slaves. 2). Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力.因此我们可以将Redis的Replication架构视为图结构. 3). Master Server是以非阻塞的方式为Slaves提供服务.所以在Master-Slave同

NoSQL之Redis(二)---Java操作Redis存储自定义类型数据

NoSQL之Redis(二)---Java操作Redis存储自定义类型数据            Redis简介            Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案.            Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器.           

Redis教程(二):String数据类型_Redis

一.概述:       字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value最多可以容纳的数据长度是512M. 二.相关命令列表: 命令原型 时间复杂度 命令描述 返回值 APPENDkeyvalue O(1) 如果该Key已经存在,APPEND命令将参数Value的数据追加到已存在Value的末尾.如果该Key不存在,APPEND命令将会创建一个新

redis之(十六)redis的cluster集群环境的搭建,转载

最近redis已经比较火了,有关redis的详细介绍,网上有一大堆,我这里只作简单的介绍,然后跟大家一起学习Redis Cluster 3.0的搭建与使用.Redis是一款开源的.网络化的.基于内存的.可进行数据持久化的Key-Value存储系统.它的数据模型建立在外层,类似于其 它结构化存储系统,是通过Key映射Value的方式来建立字典以保存数据,有别于其它结构化存储系统的是,它支持多类型存储,包括String. List.Set.Sort set和Hash等,你可以在这些数据类型上做很多原

redis之(十五)redis的集群中的哨兵角色

一:redis集群的哨兵的目的是什么?. (1)监控主redis和从redis数据库是否正常运行 (2)主redis出现故障,自动将其中一台从redis升级为主redis.将原先的主redis转变成从redis     二:redis集群+哨兵的的结构图 三单机模拟实现redis集群+哨兵的分布式部署 (1)启动redis集群 (2)查看集群角色 (3)启动哨兵(在配置文件中写入:sentinel monitor mymaster 127.0.0.1 6379 1) ==>配置文件格式:sent

redis之(十四)redis的主从复制的原理

一:redis主从复制的原理,步骤.   第一步:复制初始化 --->从redis启动后,会根据配置,向主redis发送SYNC命令.2.8版本以后,发送PSYNC命令. --->主redis收到SYNC命令后,开始在后台保存快照文件(即RDB持久化的过程),并将保存快照期间接收到的命令缓存起来. --->当主redis完成快照后,主redis会将快照文件和缓存命令发送给从redis.复制初始化结束. --->当主redis的复制初始化结束后,主redis每当收到写命令就会异步将写

Redis笔记(二)Redis的部署和启动

Linux下Redis的部署和启动 下载安装介质 Redis官网地址:http://www.redis.io/ 目前最新版本是redis-3.0.3. 可以访问 http://download.redis.io/releases/redis-3.0.3.tar.gz 下载后使用SCP上传到服务器, 或者直接下载: wget http://download.redis.io/releases/redis-3.0.3.tar.gz 解压及编译 bingyue@ubuntu:/data$ tar -z

redis之(二)redis单机的安装,配置,启动,关闭

[1]下载redis压缩包,解压,编译 [2]编译完成后,在当前目录下运行make test命令确保编译无错误,知道屏幕上输出 [3]解压编译,测试编译无误后,以root用户运行make install命令,将可执行文件复制到/usr/local/bin目录下,方便以后执行程序时,可以不用输入完整路径 [4]运行make install命令后,会在/usr/local/bin目录下复制redis的常用服务.解释如下 [5]启动Redis --->直接启动,使用默认端口号6379 运行命令>re