-
AOF 优势: 1.同步: a.每秒同步:异步完成,效率高,一旦系统宕机,修改的数据丢失 b.每修改同步:同步持久化,每分钟发生的变化记录到磁盘中,效率低,安全 c.不同步 2.日志写入操作追加模式append a.系统宕机,不影响存在的内容 b.写入一半数据,若系统崩溃,下次启动redis,redis-check-aof工具解决数据一致性 3.如果日志过大,自动重写机制,修改的数据写入到到磁盘文件,创建新文件,记录产生的修改命令,重写切换时,保证数据安全 4.格式清晰的日志文件,完成数据的重建 劣势: 1.对于相同数据文件,相比RDB,AOF文件较大 2.效率低 配置: vim redis.conf 默认: appendonly no #AOF方式默认关闭 appendfilename appendonly.aof #配置文件 #appendfsync always #每修改一次,同步到磁盘上 appendsync everysec 每秒同步到磁盘一次 #appensync no 不同步 实践打开AOF: appendonly yes appendfsync always 终端2:先断开redis ./bin/redis-cli shutdown 启动redis: ./bin/redis-server ./redis.conf 终端1:set name 100 终端2:产生appendonly.aof文件 终端1:flushall 清空数据库 终端2: ./bin/redis-cli shutdown vim appendonly.aof 删除flushall ./bin/redis-server ./redis.conf ./bin/redis-cli keys * 数据还原查看全部
-
RDB 优势: 1.数据库只包含一个文件,通过文件备份策略,定期配置,恢复系统灾难 2.压缩文件转移到其他介质上 3.性能最大化,redis开始持久化时,分叉出进程,由子进程完成持久化的工作 ,避免服务器进程执行I/O操作,启动效率高 劣势: 1.无法高可用:系统一定在定时持久化之前宕机,数据还没写入,数据已经丢失 2.通过fock分叉子进程完成工作,数据集大的时候,服务器需要停止几百毫秒甚至1秒 配置: cd /usr/local/redis vim redis.conf 默认: save 900 1 #每900秒至少1个key变化,持久化一次,到内存一个快照 save 300 10 #每300秒至少10个key变化,往硬盘写一次 save 60 10000 #每60秒至少10000个key变化,写一次 dbfilename dump.rdb #数据的文件名 dir ./ #保存的路径,redis路径下查看全部
-
Redis持久化 数据从内存同步到硬盘 两种持久化方式: RDB方式 AOF方式 持久化使用的方式: 1.RDB方式: 默认支持,在指定的时间间隔内,将内存中的数据集快照写入到磁盘 2.AOF方式: 日志的形式记录服务器处理的每一个操作,服务器启动之初,读取文件,重新构建数据库 3.无持久化 通过配置继用Redis持久化功能,Redis缓存机制 4.同时使用RDB和AOF查看全部
-
相关特性: 多数据库 Redis事务 Redis一个实例包含多个数据库:默认16个 客户端默认连接0号数据库 select 1 #选择1号数据库 move name 1 #移动 name 到1号数据库 事务: 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这个四个特性也简称为ACID特性。 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。 为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。 答:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。 例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。 则可以定义一个事务T,T包括两个操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。 multi:开启事务 exec:提交,执行的命令被原子化执行 discard:回滚查看全部
-
存储Sorted-Set 1.Sorted-Set和Set的区别 sorted-set:每个成员都有一个分数与之关联,成员唯一,可以对应多个分数 2.Sorted-Set中的成员在集合中的位置是有序的 存储Sorted-Set常用命令: 1.添加元素:zadd zadd sort 10 a 20 b 30 c #a的分数是10、b的分数是20、c的分数是30 2.获得元素:zscore获得分数、zcard获得成员数量 zscore sort a #获得a的分数 3.删除元素:zrem、zremrangebyrank按照排名范围删除、zremrangebyscore按照分数范围删除 zrem sort a b #删除成员a、b zremrangebyrank sort 0 4 #删除排名0-4的成员 zremrangebyscore sort 10 30 #删除分数10-30的成员 4.范围查询:zrange zrange sort 0 -1 #所有成员 zrange sort 0 -1 withscores #查询成员及分数,从小到大 zrevrange sort 0 -1 withscores #从大到小 5.扩展命令: zrangebyscore sort 0 100 withscores #显示0-100分数的成员 zrangebyscore sort 0 100 withscores limit 0 2 #显示0-100分数的成员的前两名 zincrby sort 10 c #给c加上10 zcount sort 80 100 # 显示80-100分数的成员个数 Sorted-Set使用场景: 如大型在线游戏积分排行榜 构建索引数据查看全部
-
概述:存储Set 和List类型不同的是,Set集合中不允许出现重复的元素 Set可包含的最大元素数量是4294967295 存储set常用命令: 1.添加/删除元素:sadd、srem sadd set a b c srem set a b c 2.获得集合中的元素:smembers、sismember smembers set sismember set a #判断set集合中是否有a 3.集合中的差集运算:sdiff sdiff set1 set2 #集合set1和集合set2存在的差集 4.集合中的交集运算:sinter sinter set1 set2 5.集合中的并集运算:sunion sunion set1 set2 6.扩展命令: scard set #获取set集合中的参数 sdiffstore db1 set1 set2 #将set1和set2差集存到db1中 sinterstore db2 set1 set2 #将set1和set2交集存到db2中 sunionstore db3 set1 set2 #将set1和set2并集存到db3中 存储Set使用场景:(访问博客的ip,客户的交集) 跟踪一些唯一性数据 用于维护数据对象之间的关联关系查看全部
-
概述: 元素插入 链表表头或结尾插入:高效,中间:低 存储list: 1.ArrayList使用数组方式:使用索引查询-块,新增删除时涉及位移操作-慢 2.LinkedList使用双向链接方式:每个元素记录前后元素指针 3.双向链表增加数据 4.双向链表删除数据 存储list常用命令: 1.两端添加:lpush、rpush lpush list 1 2 3 #从左侧往list表中插入1 2 3 rpush list a b c #从右侧忘list表中插入a b c 2.查看列表:lrange lrange list 0 -1 #从头到尾查看 lrange list 0 5 #从开始到第5个查看 3.两端弹出:lpop、rpop lpop list #从左边弹出第一个数 rpop list #从尾部弹出第一个数 4.获取列表元素个数:llen llen list #查看元素个数 5.扩展命令:lpushx、rpushx、lrem、lset、rpoplppush lpushx list x #插入x到list表的开头 rpushx list y #插入y到list表的尾部 lrem list 2 3 #从头到尾删除2个3 lrem list -2 1 #从尾到头删除2个1 lrem list 0 2 #删除所有2 lset list 3 mmm #在list表第3个角标设置mmm linset list before a yy #在list表中a之前插入yy linset list after b xx #在list表中b之后插入xx rpoplpush list1 list2 #将list1表的开头压入到list2表的结尾查看全部
-
存储Hsh String Key和String Value的map容器(姓名、年龄) 每一个Hash可以存储4294967295个键值对 常用命令: 赋值:hset、hmaset hset userame jack hmset username jack age 18 取值:hget、hgetall hget myhash username hget myhash username age hgetall myhash 删除:hdel、del hdel myhash username hdel myhash username age del myhash 增加数字:hincrby hincrby myhash age 5 自学命令:判断存在hexists、获得属性hlen、获得所有key、获得所有值hvals hexists myhash username hlen myhash hkeys myhash hvals myhash查看全部
-
一.五种数据类型: 1.字符串(String) 2.字符串列表(list) 3.有序字符串集合(sorted set) 4.哈希(hash) 5.字符串集合(set) 二.Key定义的注意点 不要过长 不要过短 统一的命名特点 三.存储String 二进制安全的,存入和获取的数据相同 Value最多可以容纳的数据长度是512M 四.存储String常用命令 赋值:set key value 删除:del key 取值:get key、getset key value、 数值增减:incr key(递增)、decr key(递减) 扩展命令:incrby key 5(增加5)、decrby key 5(减5) apend key 123(增加1个长度字符串,追加字符123)查看全部
-
为什么需要NoSQL High performance – 高并发读写 Huge Storage – 海量数据的高效率存储和访问 High Scalability && High Availability—高可扩展性和高可用性查看全部
-
NoSQL查看全部
-
hash查看全部
-
开始记录查看全部
-
redis持久化,从内存把数据持久化到硬盘上查看全部
-
redis特性,多数据库+事物查看全部
举报
0/150
提交
取消