通知短信+运营短信,5秒速达,支持群发助手一键发送🚀高效触达和通知客户 广告
# redis ~~~ 官网 : https://www.redis.ro ~~~ ## redis 简介 : ~~~ 1. 开源的 构建于内存 的 数据结构 数据库 2. 常用于 数据存储 缓存处理 和 消息处理 3. 支持多种数据结构类型 4. 原子化操作( 在多线程(进程)的操作系统中不能被其他进程(线程)打断的操作 ) ~~~ ~~~ 5. 简单易用 的 主从复制 功能 ps : 主从复制 : mysql要做到主从复制,其实依靠的是二进制日志,即:假设主服务器叫A,从服务器叫B;主从复制就是 B跟着A学,A做什么,B就做什么。那么B怎么同步A的动作呢?现在A有一个日志功能,把自己所做的增删改查的动作 全都记录在日志中,B只需要拿到这份日志,照着日志上面的动作施加到自己身上就可以了。这样就实现了主从复制。 ~~~ ~~~ 6. 支持lua脚本(语言)运行 7. 支持LRU缓存算法剔除策略的控制 8. 支持事务处理 9. 支持不同级别的磁盘 持久化 处理策略 ~~~ ## redis 优势 ~~~ 1. 极高的读写性能 2. 丰富的数据类型 3. 原子性操作 4. 支持主从热备 5. 丰富的特性 ~~~ ## redis 应用场景 ~~~ 1. 高性能缓存 1. 缓存是redis最常见的应用场景 2. 缓存数据 3. 缓存page 4. 缓存会话信息session等 ​ 2. 多类型数据结构 1. string 存储短信验证码,配置信息 2. hash 存储用户信息,商品信息 3. list 省,市,区表,   存储消息队列 4. set 唯一性 5. sorted set 有序集合 可以利用写成排行榜的效果 6. hyperloglog 统计,计数 7. pub/sub 构建频道/聊天 ​ 3.分布式锁 1. redis 分布式 键值 存储 2. 高并发下的数据一致性问题 3. 单线程 4. 用作分布式锁 5. 性能优质,不会成为性能瓶颈 ​ 4. 自动过期 ​ 5. 高并发和海量数据的处理 1. 分片应用应对高并发的 请求 2. 支持主从热备,保证可用性 ​ 6. 数据之久化 数据构建内存中 ~~~ ## liunx 安装redis ~~~ 1. wget ( redis官网复制下载链接 ) ​ 2. tar xzvf redis-版本.tar.gz 解压 ​ 3. cd redis-版本 进入解压的目录 ​ 4. make 编译 ​ 5. make install 安装 ​ 6. rdis-server redis.conf 启动配置 ​ 7. redis-server 启动redis服务 ​ ps : 后台运行 : 修改redis.conf里面 daemonize,no改为yes,然后重新启动 默认端口 : 6379 启动客户端 : redis-cli ~~~ ## redis基本操作指令 ~~~ 1. keys pattern 返回匹配模式的所有键名 ​ 2. set key1(键名) 100(值) 设置 ​ 3. get key1(键名) 获取键的值 ​ 4. exists 判断键(多个键是否存在) ​ 5. scan 每次调用之后,都会向用户 返回 一个 新的游标,用户在 下次迭代 时 需要使用 新游标 作为 scan命令的 游标参数, 以此来 延续之前的迭代过程 ​ 格式 : scan 参数(游标) math(相同) key*(匹配模式) count(条数) ​ 6. randomkey 返回随机的键名 ​ 7. typekey 查询键的类型 ​ 8. object refcount key(键名) 查看引用多少次 ​ 9. object idletime key(键名) 查询此键多长时间没用 ​ 10. object encoding key(键名) 查询键的数据类型 ​ 11. rename key1(键名) key2(键名) 重命名 ​ 12. renamenx key1(键名) key2(键名) 重命名(比rename更加安全) ​ 13. touch key(键名) 修改键名的访问时间 ​ 14. del key(键名) 删除键 ​ 15. unlink key(键名) 删除键(推荐使用此删除),可删除多个键 ~~~ ## redis 键过期操作 ~~~ 1.expire key(键名) 3(时间:秒) 设置时间,到了3s自动删除 ​ 2.expireat key(键名) 14020300(时间戳) 到了指定时间戳过期就删除 ​ 3.pexpire key(键名) 300(时间:毫秒) 设置时间,到了时间自动删除 ​ 4.ttl key(键名) 查询键的剩余时间 ​ 5.pttl key(键名) 返回剩余时间(单位毫秒) ​ 6.persist key(键名) 取消过期时间,使键不被删除 ~~~ ## redis 键的序列化操作 ~~~ 1. dump key(键名) 序列化键,并返回序列化的值 ​ 2. restore key(键名) 0(过期时间) 序列化的值 replace(如果有值,覆盖) ​ 3. sort key(键名) 对键名中的值进行排序 ​ 4. move key(键名) 1(库名) 移动到指定的库中(数据迁移) ​ 5. select 1(库名) 选择库 ​ 6. migrate 网址 端口 键名 库名 毫秒 将数据传输到指定端口的数据库中 ~~~ ## redis 字符串类型 ###应用场景 1.高速缓存 html片段 或 页面 2.高速缓存 关系型数据库 查询的数据结果 3.高速 缓存 会话控制数据 4.分布式锁 5.存储 设置固定格式 的 字符串序列 6.防止重复提交 7.统计 网站访问者 数量 8.每天注册用户数 9.限制 API 在某一时段的访问次数 10.用户签到 11.统计活跃用户 12.用户在线状态 ### 基本命令 ~~~ 1. set key(键名) value(值) seconds(秒)[milliseconds(毫秒) nx(不覆盖) |(或) xx(直接覆盖) 键存在则值会覆盖 ​ 2. mset key(键名) value(值) key(键名) value(值) 同时设置多个键值对 ​ 3. setex key(键) 5(时间:秒) value(值) 设置键并指定生成时间 ​ 4. psetex key(键) 500(时间:毫秒) value(值) 设置键并指定生成时间 ​ 5. setnx key(键名) value(值) 如果键存在,设置失败,返回0 ​ 6. psetnx key(键名) value(值) 如果键存在,设置失败,返回0(设置多个键) ​ 7. setrange key(键名) offset(位置) value(值) 修改或设置 offset位置 上的内容 ~~~ ###redis 字符串类型键的查询 1.get key(键名) 查询 key 的值 ~~~ 2.mget key(键名) key 查询多个 key 的值 ​ 3.getrange key(键名) start(开始) end(结束) 查询 key 的值,内容取决于 start 和 end ​ 4.strlen key(键名) 查询 key 的长度 5.getset key(键名) value(值) 给 key 设置 值,并 返回旧值 ~~~ ###redis字符串类型键的计数操作 1\. incr key(键名) 键的值自增(值必须是整形) ~~~ 2. incrby key(键名) num(数值) 键的值自增多少 或 自减多少(值必须是整形) ​ 3. incrbyfloat key(键名) num(数值) 键的值 自增多少 或 自减多少(值可以是浮点型也可以是整形) ​ 4. decr key(键名) 键的值自减 ​ 5. decr key(键名) num(数值) 键的值自减多少 ​ 应用场景 1. 统计网站的访问数量 2. 每天注册人数 3. 现在 API 在某一时刻的访问次数 4. 单号生成 5. 错误拦截 ~~~ ## redis 字符串类型键的二进制操作命令 ~~~ 1. setbit key(键名) offset(位置) value(值)(值只能是0 或 1) 设置或清除指定偏移量上的位(字节(长度)) ​ 2. getbit key(键名) offset(偏移量) 对key中的值获取指定偏移量上的位(字节(长度)) ​ 3. bitcount key(键名) start end 给 字符串进行计数,通过指定的 start 和 end,可以让计数只在特定的位(字节(长度))上进行 ​ 4. bitop operation destkey(新的键名) key(键名) key(键名) 将 一个 或 多个二进制位的 字符串 可以 进行位元操作,并将 操作结果 保存到 destkey 中 ​ operation: 1. end 逻辑与 2. or 逻辑或 3. not 取反 4. xor 逻辑异或(真假为真,假真为真,假假为假,真真为假) 5. bitops key(键名) bit(0 或 1) 返回字符串里面第一个设置为 1 或 0 的bit位 ~~~