小结:
1java整合redis一般加个依赖,和yml配置.和redis语法就好,用不到jedis
2redis的客户端有redis-client,但是人们一般使用图形化客户端redisDesktop
3和git一样,自带命令行客户端,但是人们一般使用图形化客户端source tree
4通过redis文件可以修改持久化(RDB或者AOF)策略,打开命令行客户端.
5通过服务即可打开redis服务,通过cmd也行,不过不方便
6需要掌握redisDesktop和redis在java中的语法
配置文件中:
使用jedis:当多线程使用同一个连接时,是线程不安全的。所以要使用连接池,为每个jedis实例分配一个连接。
使用Lettuce:当多线程使用同一连接实例时,是线程安全的。
Redis数据结构
五种数据类型:
字符串(String) 哈希(hash) 字符串(list) 字符串集合(set) 有序字符串集合(sortedset)
存储String常用命令:
赋值set/getset 取值get/getset 删除del 数值增减incr/decr 扩展命令append
存储Hash:
1String key 和 String Value的map容器
2每一个Hash可以存储4294967295个键值对
存储Hash常用命令:
赋值 取值 删除 增加数字 自学命令
存储list:
1ArrayList使用数组方式:查询快,删除慢
2LinkedList使用双向链表方式:增加删除快,因为仅仅改变指向,查询慢
3双向链表中增加/删除数据:LinkedList就是
存储list常用命令:(从左往右:0-56788;从右往左:-1.-2.......,0-> -1意味着从开始到结束)---有序的集合,可以重复元素
两端添加 查看列表 两端弹出 获取列表元素个数 扩展命令
存储set:
1和List类型不同的是,Set集合不重复元素并且无序
2Set可包含的最大元素数量是4294967295
存储set常用命令:
添加/删除元素 获得集合中的元素 集合中差集运算
集合中交集运算 集合中并集运算 扩展命令
存储Sorted-Set:
1Sorted-Set和Set的区别:Sorted-Set有序唯一,有一个分数,分数可变.增加插入高效.在排名热搜应用较多
2Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-set常用命令:
添加元素 获得元素 删除元素 范围查询 扩展命令
redis特性
相关特性:
1多数据库 2Redis事务
Redis持久化
redis的数据保存在内存中,为了在关机时候保证数据不丢失,就需要持久化保存在硬盘中,
两种持久化方式:RDB方式 AOF方式 ,可以使用一种或者结合起来用.
持久化使用的方式:
1默认是RDB方式,就是在指定的时间内(比如30秒一次)将数据存储到硬盘
2AOF持久化,就是开机时候通过读取文件的方式构建数据库
3无持久化:通过配置使他在关机时候不持久化到硬盘,就相当于缓存,一般和数据库搭配起来使用
4同时使用RDB和AOF
RDB--每秒同步
优势:
1每天或者固定时间持久化n长时间内数据,闹存在文件内,如果服务器雪崩,可以快速回复数据
2他可以把持久化文件存储在其他存储位置
3可以分叉子线程完成持久化工作,可以极大避免服务器进程执行AOF操作
4如果数据集很大,启动的效率更高
缺点:
1如果想最大程度避免数据不丢失,并不是最好的选择,因为在数据持久化之前经常荡机
2因为是分叉子线程协助持久化,分叉过程需要几百毫秒甚至1秒,可能错失持久化
配置:在redis的conf中dump.rdb,默认的,保存
AOF--每修改同步
优点:
1数据安全,不丢失
2采用日志方式纪录,如果在纪录时服务器雪崩,会通过AOF-check工具保证数据一致性
3有2个日志:1是当前操作的日志 2是老日志append追加
劣势:
1效率低
2相同数量的文件更大
配置:
1在conf中有appendonly no,不打开,写成append yes就会打开
2把策略改变,appendsync always前面#去除,appendfsync everyec前加#
3保存