1.Redis简介
Redis是完全开元免费的是一个高性能的NOSQL的key-value数据库
Redis是一个开元的使用ANSI C语言编写,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库
2.NoSQL
泛指非关系型数据库:数据与数据之间没有关联关系。可以用命名来解决
比较适用于:
(1)数据模型简单
(2)需要灵活性更强的IT系统
(3)对数据库性能要求较高
(4)不要要高度的数据一致性
(5)对于给定key,比较容易映射复杂值的环境
与其他Key-value:
1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。
3.Redis支持数据的备份、集群等高可用功能
Redis的特点
1.性能极高
-Redis能读的速度是110000次/s,写的速度是81000次/s 2.丰富的数据类型
2.丰富的数据类型
-Redis支持类型String,List,Hash,Set以及OrderSet数据类型操作
3.原子
-Redis的所有操作都是原子性的,意思就是要买成功执行,要买失败完全不执行。单个操作是原子性的,多个操作也支持事务
4.丰富的特性
-Redis还支持public/subscribe通知key国旗等等特性
3. 其余的数据库类型
1.键值存储数据库
这一类数据主要会使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。key/value模型对于it系统来说优势在于简单,易部署。但是如果DBA只对部分只进行查询或者更新的时候,key/value就显得效率低下
2.文档型数据库
该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看做是键值型数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
3.图形数据库
同其他行列以及港星结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上面。NoSQL数据库没有标准的查询语言,因此进行数据-库查询需要定制数据模型。
Redis总结
Redis单个key存入512m大小
Redis支持多种类型的数据结构
Redis是单线程 原子性
Redis可以持久化 因为使用了RDB和AOF机制
Redis支持集群 而且redis支持库(0-15)16个库
Redis还可以做消息队列 比如聊天室 IM
企业级开发中可以用作数据库、缓存和消息中间件等大部分功能
优点:
1.丰富的数据结构
2.高速读写,Redis使用自己实现的分离器,代码量很短,没有使用lock
缺点:
1.持久化。Redis直接将数据存储到内存中,呀将数据保存到磁盘上
2.耗内存,占用内存过高。
Redis配置
1.Redis默认不是以守护进程的方式运行, 可以通过该配置项修改,使用yes启用守护进程
daemonize no //改为yes
Redis采用是单进程多线程的模式,当redis.conf中选项daemonize设置成yes时代表开启守护进程模式,在该模式下,Redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时Redis将一直运行,除非手动kill该进程。但当daemonize选项设置成no时,当前界面进入Redis的命令行界面,exit强制退出或者关闭连接工具
2.当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid
3.Redis作为优秀的中间缓存件,时常会存储大量的数据,即使采取了集群部署来动态扩容,也应该即时的整理内存,维持系统性能(如果一直新增,内存很快就会沾满)
在Redis中有两种解决方案:
一是为数据设置超时时间
设定内存空间,建议内存不要超过256-512M
二是采用LRU算法动态将不用的数据删除。
内存管理的一种页面置换对于在内存中但又不用的数据块叫做LRU,操作系统会根据那些数据属于LRU而将其移除内存而腾出空间来加载另外的数据。
1.volatile-lru:设超时时间的数据中,删除最不常使用的数据
2.allkeys-lru:查询所有的key中最近不常使用的数据进行删除,这是应用最广泛的策略
3.volatile-random:在已经设定了超时的数据中心随即删除
4.allkeys-random:查询所有的key之后随即删除
5.volatile-ttl:查询全部设定超时时间的数据之后排序,将马上要过期的数据进行删除操作
6.Noeviction:如果设置为该属性则不会进行删除操作,如果内存溢出则报错返回
远程服务上执行命令 :
redis-cli -h ip地址 -p 端口 -a 密码
Redis关闭
1.断电,非正常关闭 容易数据丢失
查询PID ps -ef | grep -i redis
kill -9 PID
2.正常关闭,数据保存
./bin/redis-cli shutdown
redis常用命令
Expire key seconds
1.限时的优惠活动信息
2.网站数据缓存
3.手机验证码
4.限制网站访客访问频率
Redis命名规范
1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且还会降低查找效率;
2.key也不要太短,太短的话,key的可读性会降低
3.在一个项目中,key最好使用同一的命名模式,例如user:123:password;
Redis数据类型
1.string
string是Redis最基本的数据类型,一个key对应一个value
string类型是二进