jedis
- 导入jar包
![这里写图片描述](https://img-blog.csdn.net/20180104180822034?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- jedis (java 操作redis数据库技术)
- redis有什么命令,jedis就有什么方法
- 开放6379端口
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
保存防火墙设置
/etc/rc.d/init.d/iptables save
- 通过jedis设置数据:
![这里写图片描述](https://img-blog.csdn.net/20180104180840666?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 使用jedis连接池
![这里写图片描述](https://img-blog.csdn.net/20180104180853040?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
消息订阅与发布
- subscribe channel:订阅频道,例如:subscribe mychat ,订阅 mychat这个频道
![这里写图片描述](https://img-blog.csdn.net/20180104180904933?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- psubscribe channel*:批量订阅频道,例如;psubscribe s*订阅以s开头的频道
![这里写图片描述](https://img-blog.csdn.net/20180104180916816?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- publish channel content:在指定的频道中发布消息,如:publish mychat ‘today is sunday’。
![这里写图片描述](https://img-blog.csdn.net/20180104180929659?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
多数据库
- redis也是有数据库的,redis已经提前创建好了
- redis默认有16个数据库,0,1…15
- 在redis上所做的所有数据操作,都是默认在0号数据库上操作的
- 数据库与数据库之间不能共享键值对
- 切换数据库:select 数据库名
- 把某个键值对进行数据库移植:move newkey 1:将当前库的key移植到1号库中
![这里写图片描述](https://img-blog.csdn.net/20180104180947185?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 清空当前数据库:flushdb
- redis服务器数据清空:flushall
redis批量操作-事务
- mysql事务:目的是为了保证数据的完整性,安全
- redis事务:目的是为了redis语句的批量执行
- multi:开启事务用户标记事务的开始,其后执行的命令都将被存入命令队列,知道执行exec的时候,这些命令才会被原子的执行,类似与关系型数据库中的:begin transaction。
![这里写图片描述](https://img-blog.csdn.net/20180104181000239?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- exec:提交事务,类似域关系型数据库中的commit,执行批量化
![这里写图片描述](https://img-blog.csdn.net/20180104181013956?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- discard:事务回滚,类似于关系型数据库中的rollback, 不执行批量化操作
![这里写图片描述](https://img-blog.csdn.net/20180104181025739?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
redis持久化
- 持久化:将数据保存在硬盘上
- 非关系型数据库
- 默认情况下所有的增删改数据都是在内存中操作的
- 断电之后,内存中的数据不存在
- 断电之后,redis的部分数据丢失,丢失的数据是内存中的数据
- 关系型数据库
- 任何增删改语句都是在硬盘上做的操作
- 断电之后,硬盘上的数据还在
- 持久化策略RDB:是redis的默认持久化机制
- RDB相当于照快照,保存的是一种状态
- 优点:
- 缺点:
- 小内存机器不适合使用
- RDB机制符合要求就会照快照,随时随地启动,会占用一部分的系统资源,很可能内存不足直接宕机(宕机后,服务器会关闭,非正常关闭)
- 适用于内存比较充裕的计算机
- RDB何时照快照
- 服务器正常关闭时,会照一次快照
- key满足条件的时候会照一次快照
- 打开redis的配置文件
- save 900 1表示每900秒有一个key发生变化,照一次快照
- save 300 10 表示每300秒有10个key发生变化就,照一次快照
- save 60 1000表示每60秒,有10000个key发生变化,就照快照
- 持久化策略AOF:使用日志功能保存数据操作,默认AOF机制关闭的
- 每秒同步:每秒进行一次AOF保存数据
- 每修改同步:只要有key的变化语句,就进行AOF保存数据
- 不同步(默认):不进行任何持久的操作
- 配置AOF
- 打开redis配置文件
- 开启AOF机制,appendonlu改为yes。
- 设置持久化文件的名字
![这里写图片描述](https://img-blog.csdn.net/20180104181124477?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 选择策略
![这里写图片描述](https://img-blog.csdn.net/20180104181136891?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGlhb3Npbml4aWhlaXhpdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 优点:持续性占用及少量的内存资源
- 缺点:
- 日志文件会特别大,不适用于灾难恢复
- 恢复效率远远低于RDB
- 适用于内存比较小的计算机
- 实例;
- 持久化文件
,保存了操作的详细过程,文件比较大