Redis是用C语言开发的一个开源的高性能的键值对(key-value)数据库. 数据保存在内存. 是一种非关系型(NoSql)数据库.
redis中存储的数据是以key-value的形式存在的. 其中value支持5种数据. 在日常开发中使用比较多的有字符串(String)、哈希(hash)、字符串列表(list)、字符串集合(set)4种类型, 其中最为常见的是字符串类型. 1.字符串(String) 2.哈希(hash) 3.字符串列表(list) 4.字符串集合(set) 5.有序的字符串集合(sorted-set或者叫zset)
一个key对应一个value, 一个键最大能存储512MB
常用命令:
命令描述set key value设置指定 key 的值get key获取指定 key 的值del key删除key例如:存储键为name 值为zs
redis:0>set name zs "OK" redis:0>redis中hash是一个键值对集合, 是一个String类型的field和value的映射表,适合用于存储对象. redis存储hash可以看成是String key 和String value的map容器. 也就是说把值看成map集合.
常用命令:
命令命令描述hset key filed value将哈希表 key 中的字段 field 的值设为 valuehmset key field1 value1 [field2 value2]…同时将多个 field-value (字段-值)对设置到哈希表 key 中hget key filed获取存储在哈希表中指定字段的值hmget key filed1 filed2获取多个给定字段的值hdel key filed1 [filed2]删除一个或多个哈希表字段hlen key获取哈希表中字段的数量del key删除整个hash(对象)例如: 存储field为f1,value为v1
redis:1>hmset u1 f1 v1 "OK"redis列表按照插入顺序排序,为有序列表. 你可以添加一个元素导列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2的32 次方- 1 个元素 (4294967295, 每个列表超过40亿个元素)。
ArrayList 单向链表 双向链表常用命令:
命令命令描述lpush key value1 value2…将一个或多个值插入到列表头部(左边)rpush key value1 value2…在列表中添加一个或多个值(右边)lpop key左边弹出一个 相当于移除第一个rpop key右边弹出一个 相当于移除最后一个llen key返回指定key所对应的list中元素个数例如: 按大小顺序存储1~10的数字
redis:0>rpush list1 1 2 3 4 5 6 7 8 9 10 "10"redis的Set是String类型的无序集合. 集合元素唯一.
常用命令:
命令命令描述sadd key member1 [member2]向集合添加一个或多个成员srem key member1 [member2]移除一个成员或者多个成员smembers key返回集合中的所有成员,查看所有应用场景: 投票,差集计算
redis默认是16个数据库, 编号是从0~15. 【默认是0号库】
select index:切换库move key index: 把key移动到几号库(index是库的编号)flushdb:清空当前数据库flushall:清空当前实例下所有的数据库redis的高性能是由于其将所有数据都存储在了内存中,为了redis在重启之后仍能保证数据不丢失,需要将数据从内存同步到硬盘中,这一过程就是持久化. redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式. 这两种可以单独使用或者结合使用.
RDB持久化是指在指定时间间隔内将内存中的数据集快照写入硬盘中. 这种方式是将内存中的数据以快照的方式写入到二进制文件中, 默认文件名为dump.rdb 这种方式默认开启,不需要配置.
在redis.Windows.conf配置文件中有如下配置:
其中.上面配置的是RDB方式数据持久化时机:
关键字时间(秒)key修改数量解释save9001每900秒(15分钟)至少有1个key发生变化,则dump内存快照save30010每300秒(5分钟)至少有10个key发生变化,则dump内存快照save6010000每60秒(1分钟)至少有10000个key发生变化,则dump内存快照AOF持久化机制会将每一个收到的写命令都通过write函数追加到文件中,默认的文件名是appendonly.aof 这种方式默认未开启,使用时需要配置.
在redis.windows.conf配置文件中有如下配置:
将appendonly修改为yes, 但是启动redis的时候需要指定该文件,也就是意味着不能直接点击了, 需要输入命令启动:
开启aof持久化机制后,默认会在目录下产生一个appendonly.aof文件
上述配置为aof持久化的时机,解释如下:(在redis.windows.conf配置)
关键字持久化时机解释appendfsyncalways每执行一次更新命令,持久化一次appendfsynceverysec每秒钟持久化一次appendfsyncno不持久化RDB:
优点:
RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快(因为其文件要比AOF的小)RDB的性能要比AOF更好缺点:
RDB的持久化不够及时,可能会存在数据丢失RDB持久化时如果文件过大可能会造成服务器的阻塞,停止客户端请求AOF:
优点:
AOF的持久性更加的耐久(可以每秒 或 每次操作保存一次)AOF 文件有序地保存了对数据库执行的所有写入操作, 这些写入操作以 Redis 协议的格式保存, 因此 AOF 文件的内容非常容易被人读懂, 对文件进行分析(parse)也很轻松AOF是增量操作缺点:
对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积AOF:
优点:
AOF的持久性更加的耐久(可以每秒 或 每次操作保存一次)AOF 文件有序地保存了对数据库执行的所有写入操作, 这些写入操作以 Redis 协议的格式保存, 因此 AOF 文件的内容非常容易被人读懂, 对文件进行分析(parse)也很轻松AOF是增量操作缺点:
对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积AOF 的速度可能会慢于 RDB