Redis(Remote Dictionary Server)远程字典服务,是一个非关系型数据库(NOSQL数据库)
一般用来存储经常访问的,但又不经常改变的数据,端口是: 6379
Redis有什么哪些应用场景?
- 1 缓存 处理一些临时数据
- 2 聊天室的在线好友列表
- 3 网站访问统计
关系型数据库和非关系型数据库的区别
(1) 关系型数据库特点(Mysql Oracle SqlServer)
- 数据是由一张张的表组成,而且这些表与表之间有关系(一对一,一对多,多对多)
- 数据是存在硬盘上,每次访问时,是将数据从硬盘读取到内存中
(2)非关系型数据库(NOSQL)特点 (Redis )
- 数据是由一个个的键值对组成
- 数据是存在内存中,在满足需要的时候,也可以将数据存在硬盘上(Redis的持久化)
Redis的优点: 高并发(QPS)、高效率(读写速度)、高扩展(随意修改表)
Redis的使用
Redis是以键和值的形式存储数据
- 键:都是字符串
- 值:有五种数据类型 字符串 json串
- 字符串(String) 键----值 Map <String,String>
指令:
set name baoqiang //添加一个键值对 如果键存在,则修改 set()
get name //根据键获取值
del name //根据键删除键值对
mget name age //根据多个键查看值
- 哈希(hash) 大键—小键–值 Map<String,Map<String,String>>
指令:
hset myhash username haohao //添加数据
hset 北京 111 冰冰
hget myhash username //根据大键和小键获取值
hdel myhash username //根据大键和小键删除值
- 字符串列表(list) 键----值1,值2,值3 Map <String,LinkedList>
指令:
lpush mylist a b c //压栈 添加数据,键为mylist 值为:a b c
lpop mylist //从左边弹栈 删除操作,删除的顺序和添加的顺序相反
rpop mylist //从右边弹栈
- 字符串集合(set) 键----值1,值2,值3 Map <String,HashSet>
指令:
sadd myset a b c //添加数据
smembers myset //获取数据
srem myset a b //删除数据
- 有序字符串集合(sorted set) 键----值1,值2,值3 Map<String,LinkedHashSet>
1. 存储:zadd key 值 value
2. 获取:zrange key start end [withscores]
3. 删除:zrem key value
- Redis通用指令
keys * //查看Redis中所有的键
del myset //删除指定的键值对
exists key //判断键是否存在 0表示不存在, 1表示存在
type myset //测试你的键是什么类型
Redis持久化-RDB
redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)
RDB(默认)
通过配置文件redis.windows.conf修改写入数据库的触发频率
save 900 1
save 300 10
save 60 10000
AOF
通过配置文件redis.windows.conf启动AOF模式
修改配置文件:
第392行: appendonly no 将no改为yes
更改触发模式:
# appendfsync always
appendfsync everysec(默认)
# appendfsync no