最最最基础的redis的常用数据类型及操作

redis的常用数据类型及操作

概述

       redis是基于内存的非关系型数据库,采用单线程的方式进行访问,得益于纯内存操作、单线程(避免线程切换损耗)、io多路复用技术等,响应时间非常快,每秒可达到万级别的访问量。

redis常用的数据类型有5种,如下:

1、string(字符串:所有其他类型的基础)
  • 字符串的类型的value可以是字符串(简单的字符串或者复杂json等)、数字(整型或者浮点类型)、二进制(文件、图片、音视频等),最大不超过512MB

  • 常用的操作命令:

    1. set key value (插入值)

    2. get key (获取值)

    3. mset key value (批量插入值,多个key value中间以空格隔开)

    4. mget key(批量获取key,多个key中间以空格隔开)

    5. incr key(自增整数类型的值)

    6. decr key(自减整数类型的值)

    7. setnx key value (如果key不存在就插入返回1,已经存在就返回0;可以利用redis单线程的特性结合setnx命令的特性做分布式锁)

  • 使用场景:

    1. 可以做数据库前的缓存层,降低数据库访问压力,提升程序响应速度
    2. 分布式系统中管理用户状态,做共享session
    3. 分布式锁等
2、hash(哈希:存储键值对,类似于map)
  • hash的值本身也是key value形式的键值对,可以存一些较为复杂的数据

  • 常用命令:hset key field value(插入hash值)

    1. hget key field (获取值)
    2. hdel key field (删除值)
    3. hmget key field(批量获取值 多个field之间空格隔开)
    4. hmset key field value(批量插入值 多个field之间空格隔开)
  • 应用场景:存储一些复杂的数据,例如:学生的姓名、年龄、分数

3、list(列表:存储有序可以重复数据)
  • list存储多个字符串,元素是有序且可以重复的,可以通过下标获取具体的某个值

  • 常用命令:

    1. lpush key value (从左往右插入)
    2. rpush key value (从右往左插入)
    3. linsert key before|after pivot value (向某个元素前或者后插入元素 )
    4. lrange key start end(根据开始和结束下标获取值,包括开始和结束下标本身)
    5. lindex key index (获取指定下标的值)
    6. llen key (获取列表长度)
    7. lpop key (从左侧弹出元素)
    8. rpop key (从右侧弹出元素)
    9. lrem key count value(删除指定元素 ,count为元素个数:0代表全部,负值代表从右侧开始)
    10. ltrim key start end (按照索引范围修剪列表,包含开始和结束下标位置的元素)
    11. lset key index newvalue (修改指定索引下标的元素)
    12. brpop blpop key timeout(阻塞弹出操作,1 列表为空:如果timeout=3,那么客户端要等到3s后返回,如果1.timeout=0,客户端则阻塞等下去,如果添加了数据,客户端立刻返回;列表不为空:客户端立即返回)
  • 使用场景:利用brpop blpop的阻塞操作作为消息队列使用

    1. lpush+lpop=Stack(模拟栈使用)
    2. lpush+rpop=Queue(模拟队列)
    3. lpsh+ltrim=Capped Collection(有限集合)
    4. lpush+brpop=Message Queue(消息队列)
4、set(集合:存储无序不可重复数据)
  • set集合存储无序的数据,元素不可以重复
  • 常用命令
  1. 集合内操作

    • sadd key element (添加元素)
    • srem key element(删除元素)
    • scard key (计算元素个数)
    • sismember key element(判断元素是否在集合中)
    • srandmember key (随机从集合返回指定个数元素)
    • spop key(从集合随机弹出元素)
    • smembers key (获取所有元素)
  2. 集合间操作

    • sinter key (求多个集合的交集)
    • suinon key (求多个集合的并集)
    • sdiff key (求多个集合的差集)
  3. 将交集、差集、并集结果保存

    • sinterstore destination key
    • sdiffstore destination key
    • suionstore destionation key
  • 使用场景:
  1. 给用户添加标签
    sadd user:1:tags tag1 tag2
  2. 给标签添加用户
    sadd tag1:users user:1 user:3
    (提示:用户和标签的关系维护应该在一个事务内执行,防止部分命令失败造成的数据不一致)
  3. 删除用户下的标签
    srem user:1:tags tag1 tag5
  4. 删除标签下的用户
    srem tag1:users user:1
  5. 计算用户共同感兴趣的标签
    sinter user:1 tags user:2 tags
5、zset(有序集合:存储无序不可重复数据,通过设置score来实现排序)
  • 有序集合就是在集合之上加了个score作为排序的依据

  • 常用命令:

    1. zadd key score value(score为序号值,value为值,zadd和sadd相比增加了排序,同时时间复杂度也增加)
    2. zcard key (计算元素个数)
    3. zscore key member (计算某个成员的分数)
    4. zrank key member (计算成员的排名)
    5. zrem key member (删除成员)
    6. zincrby key increment member (增加成员的分数)
    7. zrange key start end (返回指定排名范围的成员)
    8. zrangebysore key min max (返回指定分数范围的成员)
    9. zcount key min max (返回指定分数范围成员个数)
    10. zremrangebyrank key start end (删除指定排名内的升序元素)
    11. zremrangebyscore key min max (删除指定分数范围的成员)
    12. zinterstore destination numkeys key (计算交集)
    13. zunionstore destionation numkeys key (计算并集)
  • 使用场景:
    利用zset可以排序的特性做排行榜

6、redis通用命令
  • keys * (匹配获取所有key)
  • rename key newkey(重命名key)
  • expire key “seconds” (设置key的过期时间,单位:秒,返回1表示设置成功,返回0则设置失败或者key不存在)
  • ttl key (获取过期时间)
  • CONFIG get requirepass (获取密码验证,如果为空就不需要认证)
  • CONFIG set requirepass “ying” (设置密码认证为ying)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值