文章字数: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 value
1
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
改名为newkey
TYPE key
返回key存储的值类型