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。
# 键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
redis: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
列表
字符串列表,按照插入顺序排序。可以在头部(左边)或者尾部(右边)添加。
redis: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)。
redis: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类型的分数,并通过分数排序。分数可重复。
redis:0> zadd myZset 0 value1 # 向myZset中插入分数为0的value1元素
(integer)1 # 成功插入一条
redis:0> zadd myZset 1 value2 # 插入分数为1的数据
redis:0>zrangebyscore myZset 0 100
1) value1
2) value2
连接数据库
打开本地客户端
$ redis-cli # 打开客户端
redis:0>ping # 检测服务是否启动
PONG #结果
远程服务器
# host地址 port端口 password密码
$ redis-cli -h host -p port -a password
键管理
命令格式:COMMAND命令 KEY_NAME键名
-
DEL key
存在key时删除key -
DUMP key
序列化key,返回被序列化的值 -
EXISTS key
检测key是否存在 -
EXPIRE key seconds
设置过期时间(秒) -
EXPIREAT key timestamp
设置过期时间(时间戳) -
PEXPIRE key milliseconds
毫秒计过期时间 -
PEXPIREAT key milliseconds-timestamp
设置过期时间为毫秒的时间戳 -
KEYS pattern
查找符合规则的key
KEYS * # 匹配所有
KEYS h?llo # 匹配hello hallo 等
KEYS h*llo # 匹配hello haallo hllo等
KEYS h[ae]llo # 匹配hello或hallo
-
MOVE key db
将当前数据库的key移动到指定db中 -
PERSIST key
移除过期时间 -
PTTL key
毫秒单位返回剩余过期时间 -
TTL key
以秒为单位返回剩余生存时间 -
RANDOMKEY
从当前数据库中随机返回一个key -
RENAME key newkey
重命名 -
RENAMENX key newkey
不存在newkey
时将key
改名为newkey
-
TYPE key
返回key存储的值类型