0%

redis入门

文章字数:870,阅读全文大约需要3分钟

Redis是一款开源免费(BSD协议)高性能的key-value数据库

特点

  1. 支持数据持久化
  2. 支持list,set,zset,hash等数据结构
  3. 支持数据备份,master-slave(主从)模式
  4. 其它如publish/subscribe,通知,key过期等
  5. 原子性操作
  6. 高性能

基本数据类型

Redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(sorted set有序集合)

  1. string字符串
    这是最基本的类型,一个key对应一个value。二进制安全,及string可包含任何数据(图片、对象等)。最大存储512MB。
    1
    2
    3
    4
    5
    # 键name 值zhangsan
    redis:0> SET name "zhangsan"
    OK
    redis:0> GET name
    "zhangsan"
  2. 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
    7
    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多亿)
  3. List列表
    字符串列表,按照插入顺序排序。可以在头部(左边)或者尾部(右边)添加。
    1
    2
    3
    4
    5
    6
    7
    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"
  4. Set集合
    string的无序集合,通过哈希表实现,删改查复杂度都是o(1)。
    1
    2
    3
    4
    5
    6
    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"
  5. zset(sorted set)有序集合
    和set一样是string类型的元素集合,不能重复。但是每个元素都绑定一个double类型的分数,并通过分数排序。分数可重复。
1
2
3
4
5
6
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

连接数据库

打开本地客户端

1
2
3
$ redis-cli # 打开客户端
redis:0>ping # 检测服务是否启动
PONG #结果

远程服务器

1
2
# host地址 port端口 password密码
$ redis-cli -h host -p port -a password

键管理

命令格式:COMMAND命令 KEY_NAME键名

  1. DEL key存在key时删除key
  2. DUMP key序列化key,返回被序列化的值
  3. EXISTS key检测key是否存在
  4. EXPIRE key seconds设置过期时间(秒)
  5. EXPIREAT key timestamp设置过期时间(时间戳)
  6. PEXPIRE key milliseconds毫秒计过期时间
  7. PEXPIREAT key milliseconds-timestamp设置过期时间为毫秒的时间戳
  8. KEYS pattern查找符合规则的key
    1
    2
    3
    4
    KEYS * # 匹配所有
    KEYS h?llo # 匹配hello hallo 等
    KEYS h*llo # 匹配hello haallo hllo等
    KEYS h[ae]llo # 匹配hello或hallo
  9. MOVE key db将当前数据库的key移动到指定db中
  10. PERSIST key移除过期时间
  11. PTTL key 毫秒单位返回剩余过期时间
  12. TTL key以秒为单位返回剩余生存时间
  13. RANDOMKEY从当前数据库中随机返回一个key
  14. RENAME key newkey重命名
  15. RENAMENX key newkey不存在newkey时将key改名为newkey
  16. TYPE key返回key存储的值类型