Redis知识点速查
时间:2022-05-07
本文章向大家介绍Redis知识点速查,主要内容包括NoSQL概述、NoSQL数据库分类、NoSQL特点、Redis概述、应用场景、客户端、事务、持久化、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
NoSQL概述
为什么需要NoSQL
- 高并发读写
- 海量数据的高效率存储和访问
- 高可扩展性和高可用性
NoSQL数据库分类
- 键值存储。Redis
- 列存储。HBase
- 文档数据库。MongoDB
- 图形数据库。
NoSQL特点
- 易扩展
- 大数据量,高性能
- 灵活的数据模型
- 高可用
Redis概述
支持的键值数据类型
- 字符串(String)
- 散列(hash)
- 列表(list)
- 集合(set)
- 有序字符串集合(sorted set)
Key
- 不要过长
- 不要过短
- 统一的命名规范
存储String
- 底层是二进制存储的。二进制安全,存入和获取的数据相同
- Value最大512MB
命令
- 赋值
set
- 取值
get
- 删除
del
- 数值增减
incr
,decr
,incrby(+数字)
,decrby(++数字)
- 扩展命令
append(返回的事字符串长度)
存储Hash
- 赋值
hset myhash username jack
hmset myhash2 username rose age21
- 取值
hget myhash username
hmget myhash username age
hgetall myhash
- 删除
hdel myhash2 username age
- 增加数字
hincrby myhash age5
- 存在
hexists myhash username
- 得到key,value,和长度
hlen myhash
hkeys myhash
hvals myhash
存储list
- ArrayList数组存储
- LinkedList双向链表存储
- 双向链表增加删除数据
- 常用命令:
-
lpushx mylist3 a
x表示不存在不插入 -
linsert mylist before b11
在b前插入11 -
rpoplpush mylist5 mylist6
从5右边弹出押入6左边 -
lset mylist3mmm
相当于list[3]=mmm -
lrem mylist23
从头到尾,删除2个3 -
lrem mylist-21
从后到前,删除2个1 llen mylist
-
lrange mylist05
看0到5的元素,可为负数表示从右边数起 -
lpop mylist
头部弹出 -
rpop mylist
尾部弹出 lpush mylist a b c
rpush mylist a b c
- 两端添加
- 两端弹出
- 查看列表
- 获取列表元素个数
- 移除
- 设置
- 扩展命令
-
- 场景:
- 生产者消费者,队列
存储Set
sadd myset a b c
srem myset a b
smembers myset
sismember myset a
sdiff mya1 myb1
sinter mya2 myb2
sunion mya3 myb3
-
scard myset
集合内数量 srandmember myset
-
sdiffstore my1 mya1 myb1
把mya1和myb1差集存入mya1,类似的sunionstore
、sinterstore
- 场景:
- 追踪唯一性的
- 维护数据对象之间的关联
存储Sorted-Set
有序的集合
-
zadd mysort70a80b90c
分数+实际元素,元素存在的话则用新的分数替代原来的分数 -
zscore mysort a
获取分数 -
zcard mysort
长度 zrange mysort0-1
zreverange
zremrangebyrank mysort04
zremrangebyscore mysort80100
zadd mysort
zrangebyscore mysore0100withscores limit02
zincrby mysort3ls
- 场景:
- 大型在线游戏积分排行榜
- 检索索引数据
通用操作
- 查看key
keys*
kyesmy?
exists
get
rename company newcompany
-
expire newcompany1000
过期时间 ttl newcompany
type newcompany
type mylist
应用场景
- 缓存
- 任务队列
- 网站访问统计
- 数据过期处理
- 应用排行榜
- 分布式集群架构中的session分离
客户端
Java语言用Jedis
事务
-
multi
开启事务,discard
回滚,exec
提交。 - 事务串行,不会做其他事,保证严格原子性。失败后面会继续执行。
持久化
- RDB按时间间隔持久化到硬盘
- AOF按日志的记录操作
- 无持久化
- React技巧5(TodoList实现)
- 求一个数n次方后的末尾数(数论/快速幂)问题描述解题思路代码实现运行结果参考
- Catch That Cow
- React技巧4(如何处理List里面的Item)
- ZOJ 3620 Escape Time II
- React技巧3(如何优雅的渲染一个List)
- FZU 电动车通行证制度
- 贪心算法总结贪心算法基本思路算法实现实例分析参考
- React技巧2(避免无意义的父节点)
- Havel定理
- React技巧1(状态组件与无状态组件的使用)
- zoj 1315 Excuses, Excuses!
- ZOJ 2724 Windows Message Queue(优先队列)
- React多页面应用7(引入eslint代码检查)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 3分钟短文:Laravel控制器用法光速入门
- Linux查看ip的实例方法
- Ubuntu18.04通过源码安装Odoo14的教程
- Linux系统中SSH服务基于key认证实践的过程
- linux防墙iptables详细介绍、配置方法与案例
- Linux unlink函数和删除文件的操作方法
- Linux seq命令的使用详解
- Linux运维工具Supervisor的安装使用(进程管理工具)
- Linux whatis命令的使用方法
- Linux tr命令的使用方法
- Linux man命令的具体使用
- Linux locate命令的使用方法
- 解决linux系统中运行node进程却无法杀死进程的问题
- 5分钟搭建一个WebRTC视频聊天
- redis妙用-应用场景