Redis入门,共同学习共同进步,老鸟飞过
一.Redis概念
1.NOSQL
1.1.什么是NOSQL
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。随着互联网2003年之后web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的交友类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
1.2.NOSQL分类
http://www.nosql-database.org/
分类 | Examples举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
键值(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用hash table来实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
列存储数据库 | Cassandra, HBase, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
文档型数据库 | CouchDB, MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法。 |
图形(Graph)数据库 | Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群 |
2.Redis
2.1.什么是Redis
Redis 是一个高性能的 开源的、C语言写的Nosql(非关系型数据库),数据保存可以存储在内存中或者磁盘中。Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,redis严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
2.2.Redis的特点
- 数据保存在内存,存取速度快,并发能力强
- 它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)。
- redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。
- 提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
- Redis支持集群(主从同步)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
- 支持持久化,可以将数据保存在硬盘的文件中
- 支持订阅/发布(subscribe/publish)
- 支持事务
2.3.Redis和Mysql的比较
mysql | redis | |
类型 | 关系型 | 非关系型 |
存储位置 | 磁盘 | 磁盘和内存 |
存储过期 | 不支持 | 支持 |
读写性能 | 低 | 非常高 |
2.3.Redis的使用场景
- 缓存:经常查询数据,放到读速度很快的空间(内存),以便下次访问减少时间。减轻数据库压力,减少访问时间.而redis就是存放在内存中的。就如同:Mybatis 二级缓存 , ehcache框架 缓存。
- 计数器:网站通常需要统计注册用户数,网站总浏览次数等等 ,新浪微博转发数、点赞数。
- 实时防攻击系统:防止暴力破解,如使用工具不间断尝试各种密码进行登录。解决方案使用Redis记录某ip一秒访问到达10次以后自动锁定IP,30分钟后解锁
- 设定有效期的应用:设定一个数据,到一定的时间失效。验证码,登录过期, 自动解锁,购物券,红包。
- 自动去重应用:Uniq 操作,获取某段时间所有数据排重值 这个使用 Redis 的 set 数据结构最合适了,只需要不断地将数据往 set 中扔就行了,set 意为 集合,所以会自动排重。
- 队列:构建队列系统 使用 list 可以构建队列系统,使用 sorted set 甚至可以构建有优先级的队列系统。
秒杀:可以把名额放到内存队列(redis),内存就能处理高并发访问。 - 消息订阅系统:Pub/Sub 构建实时消息系统 Redis 的 Pub/Sub 系统可以构建实时的消息系统,比如很多用 Pub/Sub 构建的实时聊天系统 的例子。如QQ群
二.Redis的安装
1.下载和安装
1.1.下载Redis
http://redis.io/download ; http://redis.cn/
1.2.安装Redis
本文演示的是window版本,解压Redis包即可
1.3.Redis目录介绍
redis.window.conf #reids配置文件 redis-benchmark.exe #reids压测工具 redis-check-aof.exe #aof文件校验、修复功能 redis-check-dump.exe #rdb文件校验、修复功能 redis-cli.exe #命令行客户端,连接Redis服务端可对Redis进行相关操作 redis-server.exe #Redis服务器,启动Redis
2.Redis启动和测试
2.1.启动redis-server
redis-server是Redis服务端
#进入到Redis安装目录 ,虽然双击也可以启动,但是建议使用CMD执行 redis-server.exe redis.window.conf
2.2.启动redis-client
redis-client是Redis客户端,可以通过它来连接服务端操作Redis
- 连接本机Redis直接双击 redis-cli.exe 或者执行命令
redis-cli.exe
- 如果连接其他服务的Redis需要跟上 -h参数
redis-cli.exe -h ip -p 端口 #如 redis-client.exe -h 192.168.0.11 -p 6379
- 测试Redis
set name zs #设置数据 get name zs #获取数字