1、redis介绍
redis是一款特殊的数据库软件,它是一款高性能的NOSQL系列的非关系型数据库。
1.1 什么是NOSQL/strong>
NOSQL(Not Only SQL)即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。
1.2 关系型数据库和非关系型数据库的区别:
1.2.1 关系型数据库:
①数据之间有关联关系
②数据存储在硬盘的文件上
③当对表中的数据进行一些增删改查操作时,要对硬盘上的文件进行一些IO操作,但IO操作对内存的性能是很低的,因此就需要花费大量的时间,效率就比较低
④复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
⑤事务支持使得对于安全性很高的数据访问要求得以实现
1.2.2 非关系型数据库:
①数据之间没有关联关系
②数据存储在内存中
③当对数据进行一些增删改查操作时,只需要在内存中直接操作即可,因此花费时间较少,效率就比较高
在内存中开辟一块空间,用于存放数据,这块内存空间叫做缓存,因此可以使用redis做缓存。
④性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高
⑤可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展
总结:一般将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据
1.3 nosql型数据库的优点:
①成本:nosql数据库简单易部署,基本都是开源软件,价格便宜
②查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库
③存储数据的格式:nosql的存储格式是key, value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而关系型数据库只支持基础类型
④扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难
1.4 nosql型数据库的缺点:
①维护的工具和资料有限,因为nosql是属于新的技术,不能喝关系型数据库相提并论
②不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本
③不提供关系型数据库对事务的处理
1.5 redis的应用场景:
①缓存(数据查询、短连接、新闻内容、商品内容等等)
②聊天室的在线好友列表
③任务队列(秒杀、抢购、12306等等)
④应用排行榜
⑤ 站访问统计
⑥数据过期处理(可以精确到毫秒)
⑦分布式集群架构中的session分离
2、下载、安装、简单使用
2.1 下载
redis官 下载地址:https://redis.io/download(注意:官 下载的是Linux版本的)
2.2 解压 Redis3_win.zip,解压后的文件结构:
2.3 启动
2.3.1 启动服务器端
2.3.2 启动客户端
2.4 简单使用
3、 命令操作
3.1 redis的数据结构
redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
value的数据结构:
①字符串类型:string
②哈希类型:hash :相当于map格式
③列表类型:list :相当于linkedlist格式
④集合类型:set :相当于HashSet格式
⑤有序集合类型:sortedset
3.2 使用命令来操作这5种不同的数据类型
可以自行查看Redis教程中的所有命令:https://www.redis.net.cn/tutorial/3501.html
下面简单介绍一些操作命令:
3.2.1 字符串类型:string
①存储:set key value
②获取:get key
③删除:del key
例如:
3.2.2 哈希类型:hash
①存储:hset key field value
②获取:
1获取指定的field对应的值:hget key field
2获取所有的field和value:hgetall key
③删除:hdel key field
例如:
3.2.3 列表类型:list :可以添加一个元素到列表的头部(左边)或者尾部(右边)
①存储:
1将元素加入到列表左边:lpush key value
2将元素加入到列表右边:rpush key value
②获取:
获取一个范围内的值:lrange key start end
③删除:
1删除列表最左边的元素,并返回:lpop key
2删除列表最右边的元素,并返回:rpop key
例如:
3.2.4 集合类型:set
①存储:sadd key value
②获取:
获取set集合中的所有元素:smembers key
③删除:
删除set集合中的某个元素:srem key value
例如:
3.2.5 有序集合类型:sortedset
①存储:zadd key score value
②获取:zrange key start end
③删除:zren key value
例如:
3.3 通用命令
①查询所有的键:keys *
②获取键对应的value的类型:type key
③删除指定的key value:del key
4、持久化
4.1 概念:
redis是一个内存数据库,当redis服务器重启,或者电脑重启时,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
4.2 redis持久化机制
4.2.1 RDB:(推荐使用)
在一定的时间间隔中,检测key的变化情况,然后持久化数据。默认方式,不需要进行配置,默认就使用这种机制
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
Ⅱ 重新启动redis服务器,并指定配置文件名称
修改完之后,重启redis服务器,重启方法:
1在redis的安装目录的地址栏中输入 cmd 回车,即可在当前文件夹中打开命令行窗口
2输入 :redis-server.exe redis.windows.conf
4.2.2 AOF:(不推荐使用)
日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
appendonly no(关闭AOF) –> appendonly yes(开启AOF)
# appendfsync always :每一次操作都进行持久化
appendfsync everysec :每隔一秒进行一次持久化
# appendfsync no :不进行持久化
Ⅱ 重新启动redis服务器,并指定配置文件名称
修改完之后,重启redis服务器,重启方法:
1在redis的安装目录的地址栏中输入 cmd 回车,即可在当前文件夹中打开命令行窗口
2输入 :redis-server.exe redis.windows.conf
5、Java客户端 Jedis
5.1 Jedis概念
是一款java操作redis数据库的工具
5.2 下载jedis的jar包,并导入到项目中的lib目录下
下载链接:https://mvnrepository.com/artifact/redis.clients/jedis
点击:jar 即可下载
5.3.1 写一个测试类
5.3.2 启动redis服务器和客户端
5.3.3 在客户端中输入:get username ,会提示 (nil)
5.3.4 运行测试类后再在客户端中输入:get username ,即可显示 “zhangsan”
5.4 Jedis操作redis中各种类型的数据结构
5.4.1 操作字符串类型:string
5.4.2 操作哈希类型:hash
5.4.3 操作列表类型:list
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!