-
什么是NoSql
N 和O要分开读 不能读NO非关系型数据库
查看全部 -
redis查看全部
-
aof方式:
配置:
redis.conf里appendonly no 改为 appendonly yes ,重启产生appendonly.aof文件
例如执行了flushall删除所有的key,所有命令会记录到appendonly.aof里,在里面删除flushall命令的记录,重启redis,里面的数据都会恢复
同步策略:
appendfsync always 每修改一次就同步到磁盘,一般选择这个更安全
#appendfsync everysec 每秒同步一次
# appendfsync no 不同步
优势:
带来更高的数据安全性。有三种同步策略
a.每秒同步:异步完成,效率高,一旦系统宕机,修改的数据丢失
b.每修改同步:同步持久化,每发生的变化记录到磁盘中,效率低,安全
c.不同步
AOF 文件是一个只进行追加操作的日志文件,因此在写入过程中即使出现宕机现象也不影响之前已经存在的内容
如果本次操作写入一般数据就宕机,在redis下一次启动之前通过redis -check -aof工具来解决数据一致性的问题
如果日志过大,可以自动启动重写机制,以append模式将数据不断地写入老的磁盘文件中,同时还会创建一个新的文件来记录此期间产生了哪些修改命令被执行,因此在进行重写切换时可以更好的保证数据的安全性
AOF包含一个格式非常清晰,易于理解的日志文件,用于记录所有的修改操作,也可以通过这个文件完成数据的重建
缺点:
对于相同数量的数据集而言,AOF文件比RDB文件要大一些
根据同步策略的不同,AOF在运行效率上回低于RDB
查看全部 -
save 900 1 每900秒至少一个key发生变化,就保存一次
save 300 10
save 60 10000
dbfilename dump.rdb 数据文件名
保存的路径是 dir ./
RDB 优势:
数据库只包含一个文件,通过文件备份策略,定期配置,恢复系统灾难
压缩文件转移到其他介质上
性能最大化,redis开始持久化时,分叉出进程,由子进程完成持久化的工作,避免服务器进程执行I/O操作,启动效率高
缺点:
不适合数据的高可用性,没有写入磁盘之前,出现故障,数据就丢失
通过子进程方式完成数据持久化,当数据集非常大的时候,可能会导致服务器停止一段时间几百毫秒(),
查看全部 -
RDB(默认支持的,不需要配置):在指定时间间隔内,将内存中的数据和快照写入磁盘
AOF:以日志的形式记录服务器处理的每一个操作,在redis服务器启动之初会读取该文件,重新构建数据库,保证启动后数据库中的数据是完整的
无持久化:通过配置禁用redis持久化功能,可以将redis当做缓存机制
RDB+AOF:
查看全部 -
redis所有的数据存在内存中,将数据从内存中同步到硬盘,称为持久化操作
两种方式可以结合使用
查看全部 -
事务操作
事务中所有命令都会被串行化顺序执行,redis不再会为其他客户端提供任何服务,从而保证事务中所有命令都被原子化执行
和关系型数据库相比,redis某个命令执行时报,后边的命令还会被执行,通过multi开启事务,改名了之后执行的命令都被视为食物里面相关的操作。exec相当于提交,discard相当于回滚
如果事务执行之前,客户端和服务端网络断开,之后的执行语句都不会被服务器执行
如果网络断开是发生在exec执行之后的,事务中所有命令都会被服务器执行
multi:开启事务,后面的命令都会被存入命令队列中,直到执行exec
exec:提交
discard:回滚
查看全部 -
多数据库
一个redis实例可以包含多个数据库,客户端可以指定redis实例连接哪个数据库,
一个redis实例最多提供16个数据库,下标从0到15
默认使用第一个0 通过select 1可以切换到数据库1
move myset 1 将key移到数据库1
查看全部 -
redis特性
查看全部 -
获取所有的key:keys *
获取xx开头的key:keys xx?
删除指定的key:del key1 key2
查看某个key是否存在:exist key
重命名:rename key1 key2
设置过期时间,单位为秒:expire key num
查看key所剩的超时时间:ttl key 没有设置返回-1
获取指定key的类型:type key
查看全部 -
使用场景
游戏排行,某个玩家排行变化时用zadd更新分数
查看全部 -
常用命令
添加元素:zadd name score value score value返回存入的元素个数,存入已经有的value会用新的score替换原有的score
获取元素分数:zscore name value
获取成员数量:zcard name
删除元素:zrem name value
范围查找:zrange/zrevrange name start end [withscore]
范围删除:zremrangebyrank names start score endscore
扩展命令:
返回分数在某个范围的成员并排序:zrangebyscore name startscore endscore [withscore] [limit start end]
设置指定元素增加分数:zincrby name score value
获取分数在某个范围的元素个数:zcount name startscore end score
查看全部 -
sorted-set和set
常用于如游戏排名、微博热点话题等
查看全部 -
使用场景
访问具有唯一性的数据
交集操作,两个客户购买的商品种类
查看全部 -
常用命令
添加:sadd name a b c不能有重复元素
删除:srem name a b
查看set:smembers name
查看是否有指定元素:sismenber name a返回1存在,返回0不存在
差集运算:sdiff name1 name2显示相差的元素,和key的顺序有关
交集运算:sinter name1 name2显示两边共有的部分
并集运算:sunion name1 name2去掉重复元素
扩展命令:
获取元素数量:scard name
随机返回set中的一个元素:srandmember name
将两个集合的相差的元素存储到另一个集合里:sdiffstore name1 name2 name
将两个集合的交集存储到另一个集合:sinterstore name1 name2 name
将两个集合的并集存储到另一个集合:sunionstore name1 name2 name
查看全部
举报