Redis学习笔记-基础

一、数据库简述
NoSQL(Not-Only SQL)泛指非关系型的数据库,作为关系型数据库的补充。
作用:应对基于海量用户和海量数据前提下的数据处理问题。

特性:
可扩容,可伸缩
大数据量下高性能
灵活的数据模型
高可用

常见NoSQL数据库:
Redis
memcache
HBase
MongoDB

二、信息的保存
1.商品基本信息(MySQL)
名称
价格
厂商
2.商品附加信息(MongoDB)
描述
详情
评论
3.图片信息(分布式文件系统)
4.搜索关键字(ES、Lucene、solr)
5.热点信息(Redis、memcache、tair)
高频
波段性
在这里插入图片描述
三、Redis概述
概念:
Redis(REmote Dictionary Server)是用C语言开发的一个开源的高性能键值对(key-value)数据库

特征
1.数据间没有必然的关联关系
2.内部采用单线程机制进行工作
3.高性能。官方提供的测试数据,50个并发执行10w请求,读速11w次/s,写速8.1w次/s
4.多数据类型支持

应用
为热点数据加速查询(主要场景),如热点商品,热点新闻
任务队列,如抢购
即时信息查询,如各位排行榜
时效性信息控制,如验证码控制
分布式数据共享,如分布式集群架构中的session分离
消息队列
分布式锁

四、Redis安装
在这里插入图片描述

在这里插入图片描述

五、命令
1.set 【key】【value】
2.get 【key】
3.clear
4.help 【命令名】
5.help 【@组名】
在这里插入图片描述
6.quit/exit/

六、数据存储类型
1.业务数据的特殊性
作为缓存使用
(1)原始业务功能设计
例:秒杀、双11
(2)运营平台监控到的突发高频访问数据
例:突发新闻
(3)高频、复杂的统计数据
例:在线人数
附加功能
(4)系统功能优化或升级
例:单服务器升级集群、Token管理

2.Redis数据类型
字符串 string
列表 list
散列 hash
集合 set
有序集合类型 sorted_set

3.数据存储格式
redis自身是map,其中所有的数据以key:value的形式存储
数据类型指的是存储的数据的类型(value),key永远是字符串
在这里插入图片描述
(1)string
存储的数据:单个数据,最简单的数据存储类型
格式:一个存储空间保存一个数据
内容:通过使用字符串,如果字符串以整数形式展示,可以作为数字操作使用
操作:1.set key value
2.get key
3.del key
4.mset key1 value1 key2 value2(添加/修改多个数据)
5.mget key1 key2(获取多个数据)
6.strlen key(获取数据字符串长度)
7.append key value(追加信息到原始信息尾部,不存在则新建)
单数据操作与多数据操作
在这里插入图片描述
在这里插入图片描述
8. 设置数值数据增加指定范围的值
incr key
incrby key increment
incrbyfloat key increment
9.设置数值数据减少指定范围的值
decr key
decrby key increment
在这里插入图片描述
10.设置数据具有指定的生命周期
setex key seconds value
psetex key milliseconds value
在这里插入图片描述
string类型数据操作的注意事项
1.数据操作不成功与成功的反馈
(1)表示运行结果是否成功
(integer)0 代表false(失败)
(integer)1 代表true(成功)
(2)表示运行结果值
(integer)3 代表3个
(3)数据未获取到
(nil) 代表null
(4)数据最大存储量
512MB
(5)数值计算最大范围(java中long最大值)
在这里插入图片描述
在这里插入图片描述
(2)hash类型
在这里插入图片描述
在这里插入图片描述
1. 添加/修改数据
hset key field value
2. 获取数据
hget key field
hgetall key
3. 删除数据
hdel key field1[field2]
4. 添加获取多个数据
hmset key field1 value1 field2 value2
5. 获取多个数据
hmget key field1 field2
6. 获取哈希表中的字段数
hlen key
7. 获取哈希表中是否存在指定的字段
hexists key field
8. 获取哈希表中所有的字段名或字段值
hkeys key
hvals key
9. 设置指定字段的数值数据增加指定范围的值
hincrby key field increment
hincrbyfloat key field increment
10. 不存在则设置,存在不设置
hsetnx key field value 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)list类型
数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
list类型:保存多个数据,底层使用双向链表存储结构实现
1. 添加/修改数据
lpush key value1 [value2]
rpush key value1 [value2]
2. 获取数据
lrange key start stop(start stop 的值可以为0,-1,遍历)
lindex key index
llen key
3. 获取并移除数据
lpop key
rpop key
4. 规定时间内获取并移除数据
blpop key1 [key2] timeout
brpop key1 [key2] timeout
5. 移除指定数据
lrem key count value
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)set类型
新的存储需求:存储大量的数据,在查询方面提供更高的效率
需要的存储结构:能够保存大量的数据,搞笑的内部存储机制,便于查询
set类型:与hash存储结构完全相同,只存储键不存储值,且值不允许重复
1. 添加数据
sadd key member1 [member2]
2. 获取全部数据
smembers key
3. 删除数据
srem key member1 [member2]
4. 获取集合数据总量
scard key
5. 判断集合中是否包含指定数据
sismember key member
在这里插入图片描述
6. 随机获取集合中指定数量的数据
srandmember key [count]
7. 随机获取集合中的某个数据并将该数据移出集合
spop key
在这里插入图片描述
8. 求两个集合的交、并、差集
sinter key1 [key2] (交集)
sunion key1 [key2] (合集)
sdiff key1 [key2] (差集)
9. 求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
10. 将指定数据从原始集合中移到目标集合中
smove source destination member
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述(5)sorted_set类型
新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
需要的存储结构:新的存储模型,可以保存可排序的数据
sorted_set类型:在set的存储结构基础上添加可排序字段
1. 添加数据
zadd key score1 member1 [score2 member2]
2. 获取全部数据(升序、降序)(是否scope一起输出)
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
3. 删除数据
zrem key member [member …]
4. 按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]
5. 条件删除数据
6. zremrangebyrank key start stop
zremrangebyrank key min max
在这里插入图片描述
7. 获取集合数据总量
zcard key
zcount key min max
8. 集合交、并操作(使用指令得到的结果的特征会加起来,用aggregate max则只取最大值)
zinterstore destination numkeys key [key …] [aggregate max]
zunionstore destination numkeys key [key …]
9. 获取数据对应的索引(排名)
zrank key member
zverank key member
10. score值获取与修改
zscore key member
zincrby key increment member
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(6)更多场景在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(7)key通用指令
1. key特征
key 是一个字符串,通过key获取redis中保存的数据
对于key自身状态的相关操作,如:删除,判断存在,获取类型等
对于key有效性的相关操作,如:有效期设定,判定是否有效,有效状态的切换等
对于key快速查询操作,如:按指定策略查询key
2. 删除指定key
del key
3. 获取key是否存在
exists key
4. 获取key的类型
type key
5. 为指定key设置有效期
expire key seconds
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
6. 获取key的有效时间
ttl key
pttl key
7. 切换key从时效性转换永久性
persist key
8. 查询key
keys pattern
在这里插入图片描述
9. 为key改名
rename key newkey
renamenx key newkey
10. 对所有key排序
sort
11. 其他key通用操作
help @generic

(8)db
在这里插入图片描述
1. 切换数据库
select index
2. 其他操作
quit
ping
echo message
3. 数据移动
move key db
4. 数据清除
dbsize
flushdb
flushall

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值