LINUX 学习第16天 redis
来源:互联网 发布:数据库外键和主键 编辑:程序博客网 时间:2024/06/18 07:44
redis
简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value string类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
NoSql(非关系型数据库)
mongoDB
CouchDB
Memcached
其他消息队列
RabbitMQ
优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
和其他的key-value存储有什么不同
- Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
面试宝典
- memcached单个key老版本是1M,新版本是2M。我们可以通过memcache.h文件去修改他的单个KEY的大小。
- redis单个key大小为512M
- memcached是一个多线程的缓存服务器,而redis是一个单线程的服务器
- memcached数据不能持久化,断电后数据丢失
- redis是可以进行持久化的。可以使用RDB机制和AOF机制进行数据持久化
- memcached不支持集群,它的多服务器情况是在addServers的时候,由客户端使用hash的方式,分配至指定的服务器上的。
- redis支持集群,并且redis有最多16个库。memcached没有库的概念
- redis支持更多的数据类型,而memcached只有字符型,我们需要自行处理值。
- redis在使用的时候,还能单作队列服务器使用,还支持消息订阅(聊天室,消息推送)。
- redis内部实现的数据结构是字典
在linux下面安装radius
- 下载redis
- 移动redis到指定目录
- 安装redis
- 至此,redis就成功的安装到linux上面。
常用的可执行文件
启动redis
- 直接启动
- 参数详解
RDB和AOF是什么?
redis本质上是不能进行数据持久化存储的,但是开启了RDB和AOF就可以进行数据的持久化存储。
redis 内部如果不开启RDB机制和AOF机制,本质上redis的数据是不能够持久化的(即不能长时间保存)。
我们引入了一个机制叫作:RDB,它本质上是一个文件。每隔一段时间,这个时间可以在redis的配置文件中进行设置。将内容从内存中刷入至文件中。如果这个值过大会造成部份数据丢失。
也可以人为的使用对应的命令,RDB本质上是快照机制,生成一个新的快照替换原有老的快照。
SAVE命令(同步进入写入,刷进文件的时候,会阻塞后面的所有操作)
BGSAVE命令(后台写入,不会阻塞主进程)
AOF
append of file。
将命令追加至文件中。会将所有的redis命令保存至一个文件,超过最大的保存条数后,它会将原有的内容给替换掉。
如果重启了redis,则之前的AOF内存无用,从新开始进行操作和保存。
redis默认端口是多少?
6379
配置redis的开机启动
- 找到redis提供的开机启动脚本
- 复制一份出来,并且重新命名,因为我们可能要开启多个
- 编辑开机启动脚本
- 修改配置文件以及参数解析
- 启动脚本测试
- 加入开机启动
客户端连接
连接命令
数据类型
redis支持五种数据类型
string(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
在以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 name,对应的值为 runoob。
注意:一个键最大能存储512MB
hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
实例
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HGETALL 命令,user:1 为键值。
每个 hash 可以存储 232 -1 键值对(40多亿)。
list(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
实例
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
set(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
sadd key member
实例
注意:以上实例中 rabitmq 添s加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。
z
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member
实例
其他
在php7中使用redis
Github仓库地址:https://github.com/phpredis/phpredis/tree/php7
- 下载php7的扩展
- 编译安装
- 修改php.ini文件
增加如下内容: - 重启php-fpm
session使用redis进行存储
使用php操作redis
连接redis
- LINUX 学习第16天 redis
- Redis学习第三节
- Redis学习第五节
- LINUX 学习第1天
- LINUX 学习第7天
- Linux学习第4天:linux系统管理
- Linux 学习第3天 gdb 学习
- redis学习一,Linux下安装redis
- Redis学习-2:Linux安装Redis
- redis学习(一):linux安装redis
- Redis学习笔记(第一天)
- 学习Linux的第1天
- 学习LInux的第2天
- 学习Linux的第3天
- Linux内核学习第1天
- Linux内核学习第2天
- Linux内核学习第3天
- Linux内核学习第4天
- SVN服务器和客户端的搭建
- 电子邮件协议、FTP 和 CGI 编程
- Centos 环境Docker离线安装方式
- 安卓游戏接入的时候遇到的找不到V4包的方法checkSelfPermission
- 机器学习第五周(一)
- LINUX 学习第16天 redis
- hibernate多表操作1(六)多对一和一对多
- 服务器负载均衡技术
- selenium自学_元素基本定位方法
- 读取pcd文件 c++
- 欢迎使用CSDN-markdown编辑器
- mac terminal修改hosts
- Oracle之:Function :getcurrdate()
- matplotlib模块数据可视化-设置坐标轴