文章字数:870,阅读全文大约需要3分钟
Redis是一款开源免费(BSD协议)高性能的key-value数据库
特点
- 支持数据持久化
- 支持
list,set,zset,hash等数据结构 - 支持数据备份,
master-slave(主从)模式 - 其它如
publish/subscribe,通知,key过期等 - 原子性操作
- 高性能
基本数据类型
Redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(sorted set有序集合)
string字符串
这是最基本的类型,一个key对应一个value。二进制安全,及string可包含任何数据(图片、对象等)。最大存储512MB。1
2
3
4
5# 键name 值zhangsan
redis:0> SET name "zhangsan"
OK
redis:0> GET name
"zhangsan"Hash哈希Redis hash是一个键值对组合,field->value映射表。适合存储对象先使用
DEL keyName删除上一个测试的key,防止报错WRONGTYPE Operation against a key holding the wrong kind of value1
2
3
4
5
6
7redis:0> DEL name
redis:0 > HMSET myhash field1 "value1" field2 "value2"
OK
redis:0> HGET myhash field1
"value1"
redis:0> HGET myhash field2
"value2"HMSET设置field->value对,HGET获取hash上的field对应的value
每个hash可以存2^32 -1个键值对(40多亿)List列表
字符串列表,按照插入顺序排序。可以在头部(左边)或者尾部(右边)添加。1
2
3
4
5
6
7redis:0> lpush myList string1 #开头插入string1
(integer)1 #返回index
redis:0> lpush myList string2 # 开头再插入一个
(integer)2
redis:0> lrange myList 0 5 # 返回0-5位置之间的元素
1) "string1"
2) "string2"Set集合string的无序集合,通过哈希表实现,删改查复杂度都是o(1)。1
2
3
4
5
6redis:0> sadd mySet value1 #向集合mySet插入一条数据value1
(integer)1 # 插入成功返回1
redis:0> sadd mySet value1
(integer)0 # 如果value存在则不插入,返回0
redis:0> smembers mySet # 输出所有
1) "value1"zset(sorted set)有序集合
和set一样是string类型的元素集合,不能重复。但是每个元素都绑定一个double类型的分数,并通过分数排序。分数可重复。
1 | redis:0> zadd myZset 0 value1 # 向myZset中插入分数为0的value1元素 |
连接数据库
打开本地客户端
1 | $ redis-cli # 打开客户端 |
远程服务器
1 | # host地址 port端口 password密码 |
键管理
命令格式:COMMAND命令 KEY_NAME键名
DEL key存在key时删除keyDUMP key序列化key,返回被序列化的值EXISTS key检测key是否存在EXPIRE key seconds设置过期时间(秒)EXPIREAT key timestamp设置过期时间(时间戳)PEXPIRE key milliseconds毫秒计过期时间PEXPIREAT key milliseconds-timestamp设置过期时间为毫秒的时间戳KEYS pattern查找符合规则的key1
2
3
4KEYS * # 匹配所有
KEYS h?llo # 匹配hello hallo 等
KEYS h*llo # 匹配hello haallo hllo等
KEYS h[ae]llo # 匹配hello或halloMOVE key db将当前数据库的key移动到指定db中PERSIST key移除过期时间PTTL key毫秒单位返回剩余过期时间TTL key以秒为单位返回剩余生存时间RANDOMKEY从当前数据库中随机返回一个keyRENAME key newkey重命名RENAMENX key newkey不存在newkey时将key改名为newkeyTYPE key返回key存储的值类型