1、什么是redis?在说到redis之前,不得不提就是nosql数据库,“不仅仅是SQL”,凡是非关系型数据库都是nosql数据,nosql数据库分为1、key-value数据库 (redis) 2、文档型数据库(MongoDb) 3、 列存储数据库(HBase) 4 、图形数据库,而redis就是key-value型数据库,也就是说redis是nosql数据库中存储key-value型的数据的数据库。
2、redis的特点:1、redis是基于内存的;当redis服务器打开之后,redis就会被加载到内存当中,仅使用硬盘做持久化
2、redis支持丰富的数据类型(字符串,集合,散列,无序集合,列表),后面会依次讲解
3、支持主从复制
3、为什么要使用redis? 1、如今的web网站随意浏览一处用处,当若干用户访问时,底层就是通过SQL查询数据库,SQL需要被编译,大量的SQL遇见被编译,降低了数据库的性能。
2、关系数据库中的数据是存储在辅存中,内存到硬盘之间的映射需要耗费大量的时间(与命中率相关)
因此,综上所述,可以把从关系数据库中的查询的数据库放到redis中,即内存,这对高并发的读写大大提高了性能,减轻了关系数据库的压力。
4、如何安装redis?redis的安装很简单 ,从官网下载Windows版本的redis zip文件,然后解压,打开redis-server,这样redis就已经加载进入内存中,当然也可以用命令方式打开,找到redis对应的目录,使用redis-server redis.Windows.conf打开。默认的端口号是3679,(关于redis密码设置请参考其他文档,本文重点不在于此),然后使用redis提供的伪客户端(redis-cli)连接服务器进行测试。
5、redis支持的数据类型
1、key-value格式的字符串类型,顾名思义 key是字符串 value是字符串 ,redis提供了相关的命令来操纵字符串,如set key value,get key ,key * ,del key,type key ,exsits key.....如下图
2、哈希(hash)类型,哈希类型存储的是字符串段和字符串值之间的映射,听下来很晦涩,其实可以表示就是存储的一个对象字符串表示法。哈希只支持字符串类型。命令在下图中体现,也可以参考网上资料,
3、redis列表(List),redis中的列表相当于java中List,记录添加顺序,允许元素重复,列表的最大长度是2^32-1,可以在头部和尾部插入。
4、redis集合,redis集合是唯一字符串的集合,不允许元素重复,不记录添加顺序。集合的最大长度也是2^32-1
5、redis有序集合,有序集合记录添加顺序,但不允许元素重复,相关命令可以参考官方文档,https://redis.io/commands,此处给出命令url,自行观看,是在命令太多,不便一一列举。
6、redis数据库:redis支持多个数据库,各个数据库之间是相互隔离且不共享,但是又不是完全隔离的,redis默认支持16个数据库,但是不支持用户自定义数据库,我们可以通过配置文件redis_cofig进行修改redis支持的数据库个数。redis数据库从编号1开始,当我们需要使用其中的数据库时,通过select命令进行选择,默认的是1号数据库,例如select 1(选择1号数据库),所以redis中的编号更像是命名空间
7、redis事务,redis是支持事务的,redis事务就是命令集合的最小执行单位,redis事务也是具有acdi特性的,要么都执行,要么都不执行。redis事务是有multi和exec命令来控制的,multi开启事务,exec关闭事务。在multi开始事务后,依次输入命令集合,每次输出一次命令之后,都会返回queued,表示命令已被按照队列的存入服务器,如果客户端在发送exec命令之前断线了,则服务器会清空事务队列,事务中的所有命令都不会被执行。而一旦客户端发送了exec命令之后,事务中的所有命令都会被执行,即使此后客户端断线也没关系,因为服务器已经保存了事务中的所有命令。当exec命令执行后,命令按照队列顺序依次执行。由下图可以知道,当命令执行出现异常的时候,便会回滚
8、redis发布订阅:redis发布订阅是一种消息通信模式,发布者(pub)发送消息,接受者(sub)接受消息,传送信息的链路称为信道,客户端可以订阅任一数量的信道,redis发布订阅模式主要用户客户端之间通信。现在我打开两个客户端,client1和client2进行演示
要不今天就这样了,关于java连接redis,redis的持久化,redis主从复制(通过哨兵机制),redis集群,redis与分布式,后面慢慢说吧,是在有些累了,放两天假,全研究这个了