Redis
Redis数据库学习
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
安装
sudo apt-get install redis-server
后台启动服务
# 默认启动
redis-server &
# 以配置文件启动
(venv) root@5fb46468cb96:~/workspace# redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> del foo # 删除此键对
Redis对键操作
命令 | 描述 |
---|---|
DEL key | 该命令用于在 key 存在时删除 key。 |
DUMP key | 序列化给定 key ,并返回被序列化的值。 |
EXISTS key | 检查给定 key 是否存在。 |
EXPIRE key |
为给定 key 设置过期时间,以秒计。 |
EXPIRE key |
EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
PEXPIRE key |
设置 key 的过期时间以毫秒计。 |
KEYS pattern | 查找所有符合给定模式( pattern)的 key 。 |
MOVE key |
将当前数据库的 key 移动到给定的数据库 db 当中。 |
PERSIST key | 移除 key 的过期时间,key 将持久保持。 |
PTTL key | 以毫秒为单位返回 key 的剩余的过期时间。 |
TTL key | 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 |
RANDOMKEY | 从当前数据库中随机返回一个 key 。 |
RENAME key newkey | 修改 key 的名称 |
RENAMENX key newkey | 仅当 newkey 不存在时,将 key 改名为 newkey 。 |
TYPE key | 返回 key 所储存的值的类型。 |
Redis Hash
Redis Hash 是一个string类型的field和value的映射表, 特别适合用于存储对象
127.0.0.1:6379> HMSET coos name "coos redis" description "coos des" likes 20 visitors 2000
OK
127.0.0.1:6379> HGETALL coos # 获取所有键值对
1) "name"
2) "coos redis"
3) "description"
4) "coos des"
5) "likes"
6) "20"
7) "visitors"
8) "2000"
127.0.0.1:6379> HDEL coos likes # 删除likes字段
(integer) 1
127.0.0.1:6379> HGETALL coos
1) "name"
2) "coos redis"
3) "description"
4) "coos des"
5) "visitors"
6) "2000"
127.0.0.1:6379> HGET coos visitors # 获取visitors字段
"2000"
Redis 列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
127.0.0.1:6379> LPUSH run redis
(integer) 1
127.0.0.1:6379> LPUSH run mongodb
(integer) 2
127.0.0.1:6379> LPUSH run mysql
(integer) 3
127.0.0.1:6379> LRANGE run 0 10
1) "mysql"
2) "mongodb"
3) "redis"
127.0.0.1:6379> LINDEX run 2
"redis"
Redis集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
redis 127.0.0.1:6379> SADD runoobkey redis
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mongodb
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS runoobkey
1) "mysql"
2) "mongodb"
3) "redis"
Redis有序集合(Sorted Set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
redis 127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES
1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"
- INFO 查看Redis服务器信息
Redis数据备份与恢复
备份
redis 127.0.0.1:6379> SAVE
OK
该命令将在 redis 安装目录中创建dump.rdb文件。
恢复
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,如下所示:
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/root/workspace"
参考: