Redis基本介绍

  • 启动服务端:redis-server
  • 启动客户端:redis-cli --raw
  • 运行测试命令: PING
    • 异常场景:PING Could not connect to Redis at 127.0.0.1:6379: Connection refused
    • 正常场景:PONG
  • 切换数据库:Select 1
    • 注意:数据库没有名称,默认 16 个,通过 0-15 来标识
  • Redis键值对说明
    • redis 是 key-value 的数据结构; 每条数据都是一个”键值对”; 键(key)的类型是字符串(string);值(value)类型分为五种:
        1. 字符串 string;
        1. 哈希 hash;
        1. 链表 list;
        1. 无序集合 set;
        1. 有序集合 zset;

字符串 string

  • 字符串(string)是 redis 最基本的类型;

增加、修改

  • 如果设置的键不存在则为添加,如已经存在则为修改;
  • redis 中字符串(string)可以用单引号’’,或者双引号””引起来,也可以省略引号,如:”china”, ’china’, china 三种写法都可以;
设置键值 set key value
  • 例:设置健’user1’值为’aaa’
    • set 'user1' 'aaa'
设置键值及过期时间,以秒为单位 setex key seconds value
  • 例:设置键’user2’值为’bbb’,过期时间为 3 秒
    • setex ‘user2’ 3 ‘bbb
设置多个键值对mset key1 value1 key2 value2 ......
  • 例:设置键’user3’值为’ccc’,设置键’user4’值为’ddd’,设置键’user5’值为’eee’
    • mset 'user3' 'ccc' 'user4' 'ddd' 'user5' 'eee'
追加值append key value
获取单个值get key
  • 注意:根据键获取值,如果不存在返回 nil
获取多个值 mget key1 key2 ......
删除键及其对应的值del key1 key2 ......
查找键keys pattern
  • 查看所有键 keys *
  • 查看名称包含指定内容的键keys '*s*
  • 参数支持正则表达式,找到键,返回键名,找不到返回空
判断键是否存在exists key
  • 注意:如果存在返回 1,不存在返回 0
查看键对应的 value 类型type key
设置键过期时间expire key seconds
  • 以秒为单位
  • 如果没有指定过期时间则一直存在,直到使用 del 移除
查看键有效时间ttl key
  • 以秒为单位
  • 返回大于 0,代表有效时间,单位:秒;
  • 返回-1 为永远有效;
  • 返回-2 为键不存在;

哈希 hash

  • hash 用于存储”键值对”集合;
  • 每个哈希中的键可以理解为字段(field),一个字段(field)对应一个值(value);
  • hash 中值(value)类型为字符串(string);
  • 同一个哈希中字段名(field)不可以重复。

增加修改

  • 如果设置的字段不存在则为添加,如已经存在则为修改;
设置单个字段 hset key field value
  • 例:设置键’huser1’的字段’name’值为’tom‘
    • hset huser1 name tom
设置多个字段hmset key field1 value1 field2 value2 ......
  • 例:设置键’huser2’的字段’name’值为’mary’,字段’sex’值为’female’
    • hmset ‘huser2’ ‘name’ ‘mary’ ‘sex’ ‘female’
获取指定键所有的字段hkeys key
获取一个字段值hget key field
获取多个字段值hmget key field1 field2
获取所有字段的值hvals key
获取所有字段名包括字段对应的值hgetall key
删除 hash 中指定字段hdel key field1 field2
删除整个 hash 键及字段与值,使用 del命令del key1 key2 ......

列表 List

  • 链表中的值(value)类型为字符串(string);
  • 链表中每个值按照添加的顺序排序。
从左侧插入值 lpush key value1 value2......
从右侧插入值rpush key value1 value2.......
在指定值的前或后插入值linsert key before或after值插入的值
  • 例:在键’luser1’的列表中值’cc’前加入值’11’
    • linsert 'luser1' before 'cc' '11'
  • 例:在键’luser1’的列表中值’cc’后加入值’22’
    • linsert 'luser1' after 'cc' '22
获取列表值lrange key start stop
  • 返回列表里指定范围内的值
  • 索引从左侧开始,第一个值的索引为 0;
  • 索引可以是负数,表示从尾部开始计数,如:-1 表示最后一个值;
  • start,stop 为要获取值的索引。
修改列表值lset key index value
  • 设置指定索引位置的值
  • 索引从左侧开始,第一个值的索引为 0;
  • 索引可以是负数,表示从尾部开始计数,如:-1 表示最后一个值;
删除指定值lrem key count value
  • 将列表中前 count 次出现的值移除;
  • count > 0:从头往尾删除;
  • count < 0:从尾往头删除;
  • count = 0:删除所有值l;

无序集合 set

  • 无序集合中值(value)类型为字符串(string);
  • 集合里不允许有重复的值;
  • 说明:对于集合里的值只能添加与删除,不能修改;
集合中增加值sadd key value1 value2 ......
返回所有值smembers key
删除指定值srem key value

有序集合 zset

  • 有序集合中值(value)类型为字符串(string);
  • 集合里不允许有重复的值;;
  • 每个值都会关联一个分数(score),分数(score)可以为负数,通过分数(score) 将值从小到大排序;
  • 说明:对于有序集合里的值只能添加与删除,不能修改。
增加值zadd key score 1 value1 score2 value2 ...
返回指定返回范围内的值zrange key start stop [withscores]
  • start,stop 为值的下标索引;
  • 第一个值的索引为 0;
  • 索引可以是负数,表示从尾部开始计数,-1 表示最后一个值;
  • withscores: 同时获取值对应分数(score);
  • 例:获取键’zuser1’的集合中所有值
    • zrange 'zuser1' 0 -1
  • 例:获取键’zuser1’的集合中所有值, 同时获取每个值对应的分数
    • zrange 'zuser1' 0 -1 withscores
  • 例:返回分数(score)在 min 和 max 之间的值
    • zrangebyscore key min max
返回值 value 的分数(score)zscore key value
删除指定值zrem key value1 value2 ....
删除分数(score)在指定范围之间的值zremrangebyscore key min max
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐