redis-第一节作业
#信息添加 功能:设置 key,value 数据
set key value
#范例
set name itheima
#信息查询 功能:根据 key 查询对应的 value,如果不存在,返回空(nil)
get key
#范例
get name
#整体例子
set age 100
get age
#清除屏幕信息 功能:清除屏幕中的信息
clear
#退出客户端命令行模式 功能:退出客户端
quit
exit
< ESC >
#帮助 功能:获取命令帮助文档,获取组中所有命令信息名称
help 命令名称 help @组名
#范例
help get'''GET key #命令的格式summary: Get the value of a key #功能描述since: 1.0.0 #出现版本group: string #所属群组'''
help set
#返回
'''SET key value [EX seconds] [PX milliseconds] [NX|XX]summary: Set the string value of a keysince: 1.0.0group: string'''数据存储类型介绍
string
hash
list
set
sorted_set
数据类型实践案例数据存储类型介绍
系统功能优化或升级
单服务器升级集群
Session 管理
Token 管理Redis 数据类型(5种常用)
string String
hash HashMap
list LinkedList
set HashSet
sorted_set TreeSetredis 数据存储格式
redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储
数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串 Redis 存储空间 name age itheima 101 key valuestring 类型(右边)
存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
存储数据的格式:一个存储空间保存一个数据
存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用string 类型数据的基本操作
添加/修改数据
set key value
例子:
set name pipi
获取数据
get key
例子:
get name
删除数据
del key
del name添加/修改多个数据
mset key1 value1 key2 value2 …
例子:
mset a 123 name pipi age 80获取多个数据
mget key1 key2 …
例子:
mget a name age获取数据字符个数(字符串长度)
strlen key
例子:
strlen name
追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
append key value
append name pp #返回名字的追加串联string 类型数据的扩展操作
大型企业级应用中,分表操作是基本操作,使用多张表存储同类型数据,但是对应的主键 id 必须保证统一性,不能重复。
Oracle 数据库具有 sequence 设定,可以解决该问题,但是 MySQL数据库并不具有类似的机制,那么如何解决?设置数值数据增加指定范围的值
incr key
实例:
set num 1
incr num #返回2
incr num #返回3
incrby key increment
实例:
incrby num 10 #返回13 对num加10
incrbyfloat key increment #对小数追加
incrbyfloat num 1.5 #返回14.5
设置数值数据减少指定范围的值
decr key
set num 20
decr num #返回19
decrby key increment
decrby num 10 #返回9设置数据具有指定的生命周期
setex key seconds value
例子:
setex tel 10 1 #对tel值设置时间活10秒
psetex key milliseconds value
psetex tel 10 1 #对tel值设置时间活10毫秒string 类型数据操作的注意事项
数据操作不成功的反馈与数据正常操作之间的差异
①表示运行结果是否成功
(integer) 0 → false 失败
(integer) 1 → true 成功
②表示运行结果值
(integer) 3 → 3 3个
(integer) 1 → 1 1个
数据未获取到 (nil)等同于null
数据最大存储量 512MB
数值计算最大范围(java中的long的最大值) 9223372036854775807在redis中为大V用户设定用户信息,以用户主键和属性值作为key,后台设定定时刷新策略即可
eg: user:id:3506728370:fans → 12210947
实例
set user:id:3506728370:fans 12210947eg: user:id:3506728370:blogs → 6164
set user:id:3506728370:blogs 12210947
eg: user:id:3506728370:focuss → 83
set user:id:3506728370:focuss 12210947
在redis中以json格式存储大V用户信息,定时刷新(也可以使用hash类型)
eg: user:id:3506728370 →
{"id":3506728370,"name":"春晚","fans":12210862,"blogs":6164, "focus":83}
实例:
set user:id:00789 {id:00789,vkigs:789,,fansᆪᄎ123456789}
Tips 3:
redis应用于各种结构型和非结构型高热度数据访问加速
incr user:id:00789:fanskey 的设置约定
数据库中的热点数据key命名惯例表名 主键名 主键值 字段名
eg1: order: id: 29437595 name
eg2: equip: id: 390472345 type
eg3: news: id: 202004150 titlehash 类型数据的基本操作
添加/修改数据
hset key field value
实例
hset user name zhangsan
hset user age 38获取数据
hget key field
实例
hget user name #返回zhangsanhgetall key
实例hgetall user #返回所有数据
删除数据
hdel key field1[field2]
实例
hdel user name添加/修改多个数据
hmset key field1 value1 field2 value2 …
hmset usesr name zhangsan age 38获取多个数据
hmget key field1 field2 …
hmget user name age获取哈希表中字段的数量
hlen key
实例
hlen user
获取哈希表中是否存在指定的字段
hexists key field
实例
hexists user age 获取哈希表中所有的字段名或字段值
hkeys key
实例
hkeys user
hvals key 设置指定字段的数值数据增加指定范围的值
hincrby key field increment
hincrby user age 35 #年龄增加35
hincrbyfloat key field incrementhash 类型数据操作的注意事项
hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到,对应的值为(nil) hash 类型数据操作的注意事项
每个 hash 可以存储 232 - 1 个键值对
hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用
hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问瓶颈当前仅仅是将数据存储到了redis中,并没有起到加速的作用,商品信息还需要二次查询数据库
每条购物车中的商品记录保存成两条fieldfield2专用于保存购物车中显示的信息,包含文字描述,图片地址,所属商家信息等
命名格式:商品id:info
保存数据:json
实例:
hmset 003 g01:nums 100 g01:info {...}
获取所有数据 hgetall 003hsetnx key field value
例子:hsetnx 003 g05:nums 1 #对003用户增加 g05:nums 1双11活动日,销售手机充值卡的商家对移动、联通、电信的30元、50元、100元商品推出抢购活动,每种商品抢购上限1000张
解决方案 :
以商家id作为key
将参与抢购的商品id作为field
将参与抢购的商品数量作为对应的value
抢购时使用降值的方式控制产品数量
实际业务中还有超卖等实际问题,这里不做讨论redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计string存储对象(json)与hash存储对象
实例:
hmset p01 c30 1000 c50 1000 c100 1000
hincrby p01 c50 -1 #50卖了1张
hincrby p01 c100 -20 #100卖了20张
hgetall p01 #返回所有的结果list 类型数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
list类型:保存多个数据,底层使用双向链表存储结构实现添加/修改数据
lpush key value1 [value2] ……
实例:
lpush list1 huawei
lpush list1 apple
lpush list1 microsoftrpush key value1 [value2] ……
实例:
rpush list1 a b c #同时增加三个数据获取数据
lrange key start stop
实例
lrange list1 0 2 #查list1 0 到2的数据
lrange list1 0 -1 #查list1 0 到最后一个的数据lindex key index
实例
lindex list1 0
llen key
实例
llen list1获取并移除数据
lpop key
rpop key规定时间内获取并移除数据
blpop key1 [key2] timeout
blpop list1 30 #30为时间,秒单位 等30秒
brpop key1 [key2] timeout(时间)
brpoplpush source destination timeout移除指定数据
lrem key count(个数) value
实例:
rpush 001 a v c d e #对001增加5个值为 a v c d e
lrange 001 0 -1 查询001的所有数据
lrem 001 1 a 对001删除一个数据a
lrange 001 0 -1 查询001的所有数据twitter、新浪微博、腾讯微博中个人用户的关注列表需要按照用户的关注顺序进行展示,粉丝列表需要将最近关注的粉丝列在前面
新闻、资讯类网站如何将最新的新闻或资讯按照发生的时间顺序展示?
企业运营过程中,系统将产生出大量的运营数据,如何保障多台服务器操作日志的统一顺序输出?解决方案 依赖list的数据具有顺序的特征对信息进行管理
使用队列模型解决多路信息汇总合并的问题
使用栈模型解决最新消息的问题
redis-第一节作业相关推荐
- python使用redis第一节、环境配置
开发环境:[Win10].[Redis3.2.100] 开发工具:[PyCharm Community Edition 2021.3.1] 导读: 本章节我们将为大家介绍 Python 如何操作 re ...
- java 排序 1和1_新手入门-冒泡排序和选择排序第一节排序1.1排序概述排序(
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 新手入门-冒泡排序和选择排序 第一节排序 1.1排序概述 排序(sorting)的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列.  ...
- 第一节:创建SpringBoot项目并运行HelloWorld
SpingBoot 365计划开始更新了,计划手敲365个SpringBoot案例回顾总结形成知识体系.目前已经输出了32节的内容.所有源码托管在GitHub和Gitee上. 1.第一节:创建Spri ...
- 第一节 如何用Go实现单链表
一.概念介绍 下面这副图是我们单链表运煤车队. 每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据.前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车 ...
- 数据挖掘课程第一章作业《认识数据挖掘与数据预处理》
文章目录 作业内容 #1.什么是数据挖掘? 数据挖掘的定义 数据挖掘与数据分析的区别 2.数据挖掘的主要任务有哪些? 老师ppt中给出的内容 数据挖掘的应用场景 1.教育领域 2.风控领域 3.医疗领 ...
- 2017-2018-2 《密码与安全新技术》第一周作业
2017-2018-2 <密码与安全新技术>第一周作业 课程:<密码与安全新技术> 班级:2017级92班 学号:20179225 上课教师:谢四江 上课日期:2018年3月1 ...
- 第一节计算机课开场白,第一节课有趣的开场白
我是一名新老师,请问第一堂课的开场白怎么讲 我:上课 学生:起立 我:同学们好 学生:老师好 我:请坐 我:很高兴见到大家. 我是你们的英语(或其他的学科)老师 我叫* 老师有一个小小的请求. 大家一 ...
- 学习git的第一节课
第一节课的笔记 git init 创建版本库 git status 查看版本状态 git log 可以看提交次数和时间 git log --pretty=oneline 按行显示 g ...
- 初级会计实务--第七章第一节、管理会计概述
第一节.管理会计概述 1.管理会计概念和目标 管理会计是会计的重要分支,主要服务于单位内部管理需要,是通过利用相关信息,有机融合财务与业务活动,在单位规划.决策.控制和评价等方面发挥重要作用的管理活动 ...
- 设计模式-02.经典设计原则-第一节-单一职责原则,开闭原则,里式替换,接口隔离【万字长文系列】
文章目录 设计模式经典设计原则-第一节 单一职责原则(SRP) 如何理解单一职责原则? 如何判断类的职责是否足够单一? 类的职责是否设计得越单一越好? 开闭原则(OCP) 如何理解"对扩展开 ...
最新文章
- Dev-C++安装和使用教程(手把手傻瓜式教学)
- 一段关于Unix与 Linux的暗黑史
- JAVA笔记13__创建线程/线程休眠/等待线程终止/线程中断/守护线程
- Xilinx IP解析之Processor System Reset v5.0
- Codeforces.1110E.Magic Stones(思路 差分)
- 移动端分步注册_移动应用程序的可用性测试:分步指南
- UNIX下 oracle expdp,Linux服务器下对Oracle数据库expdp(导出)和impdp(导入)
- python爬取新浪新闻首页_学习了《python网络爬虫实战》第一个爬虫,爬取新浪新闻...
- 【高级内部资料】.NET数据批量写入性能分析 第一篇
- C++中和“”引用头文件的区别
- 调查 | 用户无法识别网络钓鱼攻击
- 毕业设计 基于大数据的社交平台数据爬虫舆情分析可视化系统
- visio2016 数据库模型图_数据库相关术语整理
- matlab小波具体频段,一种小波包分解节点与对应频段检索及编程方法
- NLP实验一:形式语言和自动机
- 微信缓存深度清理,一招清理20G隐藏的缓存垃圾
- 如何用中文编程c++
- Shell修改IP地址
- JAVA知识两百问(181~200)
- luogu2485 [SDOI2011]计算器 poj3243 Clever Y BSGS算法