Redis学习笔记-2.Redis常用API

文章目录

    • 1. 通用命令和数据结构
      • 1.1 keys命令
      • 1.2 dbsize
      • 1.3 exists
      • 1.4 del
      • 1.5 expire、ttl、persist
      • 1.6 type
      • 1.7 通用命令的时间复杂度
    • 2. 数据结构和内部编码
      • 总览
      • 2.1 String
      • 2.2 Hash
      • 2.3 List
      • 2.4 Set
      • 2.5 Zset
    • 3. 单线程
      • 3.1 单线程模型
      • 3.2 单线程为何这么快
      • 3.3 单线程使用注意事项
    • 4. String
      • 4.1 结构
      • 4.2 使用场景
      • 4.2 常用命令
        • 4.2.1 get,set,del
        • 4.2.2 incr,decr, incrby, decrby
        • 4.2.3 set, setnx, setxx,setex
        • 4.2.4 mget, mset
        • 4.2.5 其他命令了解
      • 4.3 实战测试
        • 4.3.1 记录网站每个用户个人主页的访问量
        • 4.3.2 缓存视频(数据源在MySQL)的基本信息
        • 4.3.3 分布式id生成器
      • 4.4 总结-复杂度
    • 5. Hash
      • 5.1 哈希健值结构和特点
      • 5.2 常用命令
        • 5.2.1 hget, hset, hdel
        • 5.2.2 hexists, hlen
        • 5.2.3 hmget, hmset
        • 5.2.4 hgetall, hvals, hkeys
        • 5.2.5 其他命令
      • 5.3 hash实战测试
        • 5.3.1 记录网站每个用户个人主页的访问量
        • 5.3.2 缓存视频
      • 5.4 String与Hash对比
        • 5.4.1 相似API
        • 5.4.2 对象的处理
          • 字符串的处理方式:
          • Hash的处理方式
          • 三种方案的优缺点
      • 5.5 复杂度总结
    • 6. List
      • 6.1 数据结构
      • 6.2 常用命令
        • 6.2.1 rpush, lpush, linsert,
        • 6.2.2 lpop, lrem, ltrim
        • 6.2.3 lrang, lindex, len
        • 6.2.4 lset
        • 6.2.5 其他命令
        • 演示示例
      • 6.3 实例
        • 微博按照时间轴的动态
        • 涉及其他数据结构
    • 7. set
      • 7.1 集合结构
      • 7.2 常用命令-集合内
        • 7.2.1 sadd, srem
        • 7.2.2 scard, sismember, srandmember, smembers
      • 7.3 常用命名-集合间
      • 7.4实例
        • 集合内的实战案例
          • 抽奖系统
          • 点赞、关注
          • 添加标签
        • 集合间的实战案例
          • 共同关注
    • 8. Sorted Set
      • 8.1 有序集合结构
      • 8.2 常见命令
        • 8.2.1 zadd, zrem, zscore
        • 8.2.2 zincrby, zcard, zrange, zrangebyscore, zcount
        • 8.2.3 zremrangebyrank, zremrangebyscore
        • 8.2.4 其他命令
      • 8.3 实战演练
        • 排行榜

1. 通用命令和数据结构

1.1 keys命令

Redis学习笔记-2.Redis常用API_第1张图片

  • Keys命令一般不在生产环境中使用
    • 1是因为查询是O(n),比较慢
    • 2是查询出的结果意义不大
      Redis学习笔记-2.Redis常用API_第2张图片
  • 一般使用的场景:
    Redis学习笔记-2.Redis常用API_第3张图片

1.2 dbsize

Redis学习笔记-2.Redis常用API_第4张图片

  • 可以在线上使用的
  • 内置的计数器,复杂度为O(1)

1.3 exists

Redis学习笔记-2.Redis常用API_第5张图片

  • 复杂度也是O(1),可以在线上使用

1.4 del

Redis学习笔记-2.Redis常用API_第6张图片

1.5 expire、ttl、persist

Redis学习笔记-2.Redis常用API_第7张图片
Redis学习笔记-2.Redis常用API_第8张图片
Redis学习笔记-2.Redis常用API_第9张图片

1.6 type

Redis学习笔记-2.Redis常用API_第10张图片

1.7 通用命令的时间复杂度

Redis学习笔记-2.Redis常用API_第11张图片

2. 数据结构和内部编码

总览

Redis学习笔记-2.Redis常用API_第12张图片
Redis学习笔记-2.Redis常用API_第13张图片

2.1 String

Redis学习笔记-2.Redis常用API_第14张图片

2.2 Hash

在这里插入图片描述

2.3 List

Redis学习笔记-2.Redis常用API_第15张图片
Redis学习笔记-2.Redis常用API_第16张图片

2.4 Set

Redis学习笔记-2.Redis常用API_第17张图片

2.5 Zset

Redis学习笔记-2.Redis常用API_第18张图片

3. 单线程

3.1 单线程模型

Redis学习笔记-2.Redis常用API_第19张图片

3.2 单线程为何这么快

Redis学习笔记-2.Redis常用API_第20张图片

3.3 单线程使用注意事项

Redis学习笔记-2.Redis常用API_第21张图片

4. String

Redis学习笔记-2.Redis常用API_第22张图片

4.1 结构

Redis学习笔记-2.Redis常用API_第23张图片

4.2 使用场景

Redis学习笔记-2.Redis常用API_第24张图片

4.2 常用命令

4.2.1 get,set,del

Redis学习笔记-2.Redis常用API_第25张图片

4.2.2 incr,decr, incrby, decrby

4.2.3 set, setnx, setxx,setex
  • set命名扩展
    • nx:空才去设置
    • xx:更新,不空才设置更新
    • ex: 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。是原子操作
      Redis学习笔记-2.Redis常用API_第26张图片
      Redis学习笔记-2.Redis常用API_第27张图片
4.2.4 mget, mset

Redis学习笔记-2.Redis常用API_第28张图片
Redis学习笔记-2.Redis常用API_第29张图片
Redis学习笔记-2.Redis常用API_第30张图片
Redis学习笔记-2.Redis常用API_第31张图片

4.2.5 其他命令了解

Redis学习笔记-2.Redis常用API_第32张图片
Redis学习笔记-2.Redis常用API_第33张图片

Redis学习笔记-2.Redis常用API_第34张图片
Redis学习笔记-2.Redis常用API_第35张图片

4.3 实战测试

4.3.1 记录网站每个用户个人主页的访问量
  • 信息是独立的在这里插入图片描述
4.3.2 缓存视频(数据源在MySQL)的基本信息

Redis学习笔记-2.Redis常用API_第36张图片
Redis学习笔记-2.Redis常用API_第37张图片

4.3.3 分布式id生成器

Redis学习笔记-2.Redis常用API_第38张图片
在这里插入图片描述

4.4 总结-复杂度

Redis学习笔记-2.Redis常用API_第39张图片

5. Hash

Redis学习笔记-2.Redis常用API_第40张图片

5.1 哈希健值结构和特点

  • 与字符串储存对象不同,无需序列化、反序列化,直接储存属性值
    Redis学习笔记-2.Redis常用API_第41张图片
    Redis学习笔记-2.Redis常用API_第42张图片

5.2 常用命令

5.2.1 hget, hset, hdel

Redis学习笔记-2.Redis常用API_第43张图片
Redis学习笔记-2.Redis常用API_第44张图片

5.2.2 hexists, hlen

Redis学习笔记-2.Redis常用API_第45张图片
Redis学习笔记-2.Redis常用API_第46张图片

5.2.3 hmget, hmset

Redis学习笔记-2.Redis常用API_第47张图片
Redis学习笔记-2.Redis常用API_第48张图片

5.2.4 hgetall, hvals, hkeys

Redis学习笔记-2.Redis常用API_第49张图片
Redis学习笔记-2.Redis常用API_第50张图片

  • 如果key非常多,而只取少量的部分,建议使用hmget
    Redis学习笔记-2.Redis常用API_第51张图片
5.2.5 其他命令

Redis学习笔记-2.Redis常用API_第52张图片

5.3 hash实战测试

5.3.1 记录网站每个用户个人主页的访问量

在这里插入图片描述

  • 与用字符串记录的区别是,信息是整体的,以用户分组
    在这里插入图片描述
5.3.2 缓存视频
  • 与字符串不同,无需序列化反序列化,直接将map转对象、对象转map即可
    Redis学习笔记-2.Redis常用API_第53张图片

5.4 String与Hash对比

5.4.1 相似API
  • 实际上,Hash相当于小的redis

Redis学习笔记-2.Redis常用API_第54张图片

5.4.2 对象的处理
字符串的处理方式:
- 1.包装成一个js对象
	- 更新一个属性,要更新整个对象的所有属性
- 2.对象中的属性单独定义成key
	- 可以快速更新一个属性,
	- 但key设置过多,用户信息不是一个整体,不便于统一管理

Redis学习笔记-2.Redis常用API_第55张图片
Redis学习笔记-2.Redis常用API_第56张图片

Hash的处理方式

Redis学习笔记-2.Redis常用API_第57张图片

三种方案的优缺点
  • hash对其中一个属性的过期时间无法设定
    Redis学习笔记-2.Redis常用API_第58张图片

5.5 复杂度总结

Redis学习笔记-2.Redis常用API_第59张图片

6. List

6.1 数据结构

Redis学习笔记-2.Redis常用API_第60张图片
Redis学习笔记-2.Redis常用API_第61张图片

6.2 常用命令

6.2.1 rpush, lpush, linsert,

在这里插入图片描述
在这里插入图片描述
Redis学习笔记-2.Redis常用API_第62张图片

6.2.2 lpop, lrem, ltrim

Redis学习笔记-2.Redis常用API_第63张图片
Redis学习笔记-2.Redis常用API_第64张图片
Redis学习笔记-2.Redis常用API_第65张图片

6.2.3 lrang, lindex, len

Redis学习笔记-2.Redis常用API_第66张图片
Redis学习笔记-2.Redis常用API_第67张图片
Redis学习笔记-2.Redis常用API_第68张图片
Redis学习笔记-2.Redis常用API_第69张图片

6.2.4 lset

Redis学习笔记-2.Redis常用API_第70张图片

6.2.5 其他命令

Redis学习笔记-2.Redis常用API_第71张图片

演示示例

Redis学习笔记-2.Redis常用API_第72张图片

6.3 实例

微博按照时间轴的动态

Redis学习笔记-2.Redis常用API_第73张图片
Redis学习笔记-2.Redis常用API_第74张图片

涉及其他数据结构

Redis学习笔记-2.Redis常用API_第75张图片

7. set

7.1 集合结构

Redis学习笔记-2.Redis常用API_第76张图片
Redis学习笔记-2.Redis常用API_第77张图片
Redis学习笔记-2.Redis常用API_第78张图片
Redis学习笔记-2.Redis常用API_第79张图片

7.2 常用命令-集合内

7.2.1 sadd, srem

Redis学习笔记-2.Redis常用API_第80张图片

7.2.2 scard, sismember, srandmember, smembers

Redis学习笔记-2.Redis常用API_第81张图片
Redis学习笔记-2.Redis常用API_第82张图片
Redis学习笔记-2.Redis常用API_第83张图片
Redis学习笔记-2.Redis常用API_第84张图片

7.3 常用命名-集合间

Redis学习笔记-2.Redis常用API_第85张图片

7.4实例

集合内的实战案例
抽奖系统

Redis学习笔记-2.Redis常用API_第86张图片

点赞、关注

Redis学习笔记-2.Redis常用API_第87张图片

添加标签

Redis学习笔记-2.Redis常用API_第88张图片

集合间的实战案例
共同关注

Redis学习笔记-2.Redis常用API_第89张图片

8. Sorted Set

8.1 有序集合结构

Redis学习笔记-2.Redis常用API_第90张图片
Redis学习笔记-2.Redis常用API_第91张图片
Redis学习笔记-2.Redis常用API_第92张图片
Redis学习笔记-2.Redis常用API_第93张图片

8.2 常见命令

8.2.1 zadd, zrem, zscore

Redis学习笔记-2.Redis常用API_第94张图片
Redis学习笔记-2.Redis常用API_第95张图片
Redis学习笔记-2.Redis常用API_第96张图片

8.2.2 zincrby, zcard, zrange, zrangebyscore, zcount

Redis学习笔记-2.Redis常用API_第97张图片
Redis学习笔记-2.Redis常用API_第98张图片
Redis学习笔记-2.Redis常用API_第99张图片
Redis学习笔记-2.Redis常用API_第100张图片
Redis学习笔记-2.Redis常用API_第101张图片

Redis学习笔记-2.Redis常用API_第102张图片

8.2.3 zremrangebyrank, zremrangebyscore

Redis学习笔记-2.Redis常用API_第103张图片

Redis学习笔记-2.Redis常用API_第104张图片
Redis学习笔记-2.Redis常用API_第105张图片

8.2.4 其他命令

Redis学习笔记-2.Redis常用API_第106张图片

8.3 实战演练

排行榜

Redis学习笔记-2.Redis常用API_第107张图片

你可能感兴趣的:(常见中间件学习,redis,学习,数据库)