Redis

文章目录

  • Redis
  • 一、简介
    • 1.Redis简介
    • 2.安装与使用
  • 二、Redis数据类型
    • 1.string类型
    • 2.hash类型
    • 3.list类型
    • 4.set类型
    • 5.sorted_set类型
  • 三、通用操作
    • 1.key通用操作
    • 2.数据库

一、简介

1.Redis简介

Redis是一种非关系型数据库,作为关系型数据库的补充。使用关系型数据库,主要存在两方面问题,难以解决海量用户以及高并发的场景。第一个是其性能瓶颈,即磁盘IO性能低下。第二个是扩展的瓶颈,即数据关系复杂,扩展性差,不便于的规模集群。于是出现非关系型数据库Nosql:
内存:降低磁盘IO次数,越低越好
不存储关系,仅存储数据:去除数据间的关系,越简单越好。

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

Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库
特征:

  1. 数据间没有必然的关联关系
  2. 内部采用单线程机制进行工作
  3. 高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。
  4. 多数据类型支持
     字符串类型 string
     列表类型 list
     散列类型 hash
     集合类型 set
     有序集合类型 sorted_set
  5. 持久化支持。可以进行数据灾难恢复

通常的使用场景:
1.存储热点信息:高频,波段性。
2.任务队列,如秒杀,抢购。
3.即时信息查询,如访问量统计,聊天室在线人数。
4.时效性信息控制,如验证码控制。
5.分布式数据共享,如分布式架构集群中的session分离。
6.消息队列
7.分布式锁

2.安装与使用


其服务器启动后,默认端口为6379,PID随机生成。

二、Redis数据类型

Redis的常用数据类型有五种。
string String
hash HashMap
list LinkedList
set HashSet
sorted_set TreeSet

1.string类型

redis自身是一个map,其中所有的数据都是采用key:value的形式存储。
数据类型指的是存储数据的类型,也就是value的部分类型,key部分永远都是字符串。

存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。
存储数据的格式:一个存储空间保存一个数据。
存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用。

添加
set key value
获取
get key
删除
del key
添加多个数据
mset key1 value1 key2 value2
获取多个数据
mget key1 key2
获取数据字符个数
strlen key
追加信息到原始信息的后部(不存在则新建)
append key value

设置数值书库增加指定范围的值
incr key
incrby key increment
incrby float increment
设置数据减少指定范围的值
decr key
decrby key increment

string作为数值操作
string在redis的内部存储默认就是一个字符串,当遇见增减类操作incr,decr时会转成数值型进行计算。
redis所有的操作都是原子性的,采用单线程处理所有的业务,命令一个个执行,因此无需考虑并大带来的数据影响。
注意:按照数值进行操作的数据,如果原始数据不能转成数值,或者超过的redis的数据上限范围,将报错。(java中的long.MAX_VALUE)
redis用于控制书库库表的主键id,为数据库表的主键提供生成策略,保障数据库表的主键唯一性。
此方案适用于所有数据库,并支持数据库集群。

设置数据具有生命周期
setex key secondes
psetex key milliseconds value

redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
string类型数据操作的注意事项
 数据操作不成功的反馈与数据正常操作之间的差异
① 表示运行结果是否成功
 (integer) 0 → false 失败
 (integer) 1 → true 成功
② 表示运行结果值
 (integer) 3 → 3 3个
 (integer) 1 → 1 1个
数据未获取到
(nil)等同于null
 数据最大存储量
512MB
 数值计算最大范围(java中的long的最大值)
9223372036854775807

2.hash类型

对象类数据的存储如果具有较频繁的更新需求操作会显得笨重

新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
需要新的存储结构:一个存储空间保存多个键值对数据
hash类型:底层使用hash表结构实现数据存储。

Hash类型数据的基本操作

添加修改
hset key field value
获取数据
hget key field
hgetall key
删除数据
hdel key field1 [field2]
添加修改多个数据
hmset key field1 value1 field2 value2
获取多个数据
hmget key filed1 filed2..
获取哈希表中的字段shuliang
hlen key
获取哈希表中是否存在指定字段
hexists key field
获取哈希表中所有字段名或字段值
hkeys key
hvals key
设置指定字段的数值数据增加指定范围的值
hincrby key field increment
hincrbyfloat key field increment

hash类型数据操作的注意事项
hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到,对应的值为(nil)
每个 hash 可以存储 2-32 - 1 个键值对
hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存
储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用
hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问
瓶颈

典型应用场景:购物车设计与实现

 以客户id作为key,每位客户创建一个hash存储结构存储对应的购物车信息
 将商品编号作为field,购买数量作为value进行存储
 添加商品:追加全新的field与value
 浏览:遍历hash
 更改数量:自增/自减,设置value值
 删除商品:删除field
 清空:删除key

3.list类型

数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
需要的存储结构:一个存储空间保存多个数据,且通过数据可以提现进入顺序
list类型:保存多个数据,底层使用双向链表存储结构实现


list类型数据的基本操作

添加修改
lpush key value1 [value2]..
rpush key value1 [value2]..
获取数据
lrange key start stop
lindex key index
llen key
获取并移除数据
lpop key
rpop key
规定时间内获取并移除数据
blpop key1 [key2] timeout
brpop key1 [key2] timeout
brpoplpush source destination timeout

典型应用场景:点赞、取消功能。最新消息展示
list类型的扩展操作

移除指定数据
lrem key count value

redis 应用于具有操作先后顺序的数据控制。
list 类型数据的操作注意事项:
 list中保存的数据都是string类型的,数据总容量是有限的,最多2-32-1 个元素 (4294967295)。
 list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作
 获取全部数据操作结束索引设置为-1
 list可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载

4.set类型

新的存储需求:存储大量的数据,在查询方面提供更高的效率
需要的存储结构:能够保证大量的数据,高效的内部存储机制,便于查询
set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的


set类型数据的基本操作:

添加数据
sadd key member1 [member2]
获取全部数据
smembers key
删除数据
serm key member1 [member2]
获取集合数据总量
scard key
判断集合中是否包含指定数据
sismember key member

set类型的扩展操作

随机获取集合中 指定数量的数据
srandmember key [count]
随机获取集合中的某个数据并将该数据移出集合
spop key [count]
求两个集合的交、并、差集
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
将指定数据从原始集合中移动到目标集合中
smove source destination member

set类型操作注意事项
 set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份
set 类型数据操作的注意事项
 set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间

set类型的应用场景:
 基于经营战略设定问题用户发现、鉴别规则
 周期性更新满足规则的用户黑名单,加入set集合
 用户行为信息达到后与黑名单进行比对,确认行为去向
 黑名单过滤IP地址:应用于开放游客访问权限的信息源
 黑名单过滤设备信息:应用于限定访问设备的信息源
 黑名单过滤用户:应用于基于访问权限的信息源

5.sorted_set类型

 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
 需要的存储结构:新的存储模型,可以保存可排序的数据
 sorted_set类型:在set的存储结构基础上添加可排序字段

sorted_set类型数据的基本操作

添加数据
zadd key score1 member1 [score2 member2]
获取全部数据
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
删除数据
zrem key member [member...]
按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]
条件删除数据
zremrangebyrank key start stop
zremrangebyscore key min max
获取集合总数量
zcard key
zcount key min max
集合的交、并操作
zinterstore destination numbers key [key...]
zunionstore destination numkeys key [key ...]

min与max用于限定搜索查询的条件。
start与stop用于限定查询范围,作用于索引,表示开始和结束索引。
offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量。

为所有参与排名的资源建立排序依据。

获取数据对应的索引
zrank key member
zrevrank key member
score 值的获取与修改
zscore key member
zincrby key increment member

redis 应用于计数器组合排序功能对应的排名。
sorted_set类型数据操作的注意事项
score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992
score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时
候要慎重
sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果

经典使用场景:VIP会员试用。任务消息权重的设定应用。

三、通用操作

1.key通用操作

删除指定K
del key
获取key是否存在
exists key
获取key的类型
type key
为k设置有效期
expire key seconds
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
获取key的有效时间
ttl key
pttl key
切换key从时效性转换为永久性
persist key
查询key
keys pattren

查询模式规则

key的其他操作

为key改名
rename key newkey
renamenx key newkey
为所有的key排序
sort
其他
help @generic

2.数据库


基本操作

切换数据库
select index
其它操作
quit
ping
echo message
数据移动
move key db
数据清除
dbsize
flushdb
flushall

Redis简介与基本数据类型相关推荐

  1. Redis(三) -- redis简介、各数据类型应用

    1. 与memcached的区别: Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等: Redis不仅仅支持简单的k/v ...

  2. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)...

    1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...

  3. Redis追命连环问,你能回答到第几问?(上)Redis简介,数据类型及缓存雪崩缓存击穿缓存穿透

    Redis常见面试题连环问,你能回答到第几问?(上) Redis常见面试题连环问,你能回答到第几问?(中) Redis常见面试题连环问,你能回答到第几问?(下) Redis是后端工程师必备的一项技能, ...

  4. Redis 6.2.6(NoSQL简介/redis介绍及安装/数据类型/配置文件)

    一.NoSQL简介 1.介绍 不仅仅是sql,泛指非关系型数据库. nosql不依赖业务逻辑方式存储,而以简单的key-value模式存储,因此大大的增加了数据库的扩展能力. 不遵徇sql标准 远超于 ...

  5. Redis简介、特性、优势、应用场景和nosql介绍

    1. nosql介绍 NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库  [不需要分析表与表之间的关系] 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全 ...

  6. 【基础概念】 Redis简介和面试常见问题

    Redis简介和面试常见问题 简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起 ...

  7. redis教程(一)之redis简介

    为什么80%的码农都做不了架构师?>>>    redis简介 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主 ...

  8. Redis简介 与Memcache的区别

    redis 是一个基于内存的高性能key-value数据库. Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作, ...

  9. Redis简介和Redis Template用法整理

    Redis简介 Redis使大规模互联网应用常用的内存高速缓存数据库,它的读写速度非常快.Redis是目前使用最广泛的内存数据存储系统之一.它支持更丰富的数据结构,支持数据持久化.事务.HA(高可用H ...

最新文章

  1. 我的Android进阶之旅------gt;Android中通过adb shell input来模拟滑动、按键、点击事件...
  2. SAP MM初阶之服务采购订单
  3. laravel框架应用和composer扩展包开发
  4. feign rest_与Feign客户轻松进行REST通信
  5. 自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串
  6. zoj 3488 conic section
  7. 事务并发、事务隔离级别
  8. 关于PHP的OpenSSL的加密问题
  9. Android 驱动开发(1)---Hello 实例
  10. Feature event receviers
  11. 如果没有英语,计算机,如果有一天没有电脑(英语作文)
  12. ORG LegacyCell for Mac - MS-20/Polysix音频合成器
  13. 01组-选题与需求分析报告
  14. 调戏木马病毒的正确姿势——上
  15. excel wps安装access2010数据库引擎
  16. 华为鸿蒙os2.0beta版发布会,华为发布鸿蒙OS Beta版,华为鸿蒙2.0适应范围以及优势所在...
  17. java 将map转List对象
  18. 联想台式计算机光驱启动,Lenovo联想笔记本光驱启动设置方法图文介绍
  19. Wiki引擎mediawiki
  20. Gartner曾劭清:云计算技术成就企业数字化转型之路

热门文章

  1. 网易游戏团队离职危机梦幻西游前途未卜(转)
  2. 阴阳师服务器维护结界卡,阴阳师3月10日维护更新内容 新增结界换及肤流量礼包...
  3. 软件架构设计常用方法-软件架构设计学习第五天(非原创) 发布成功,点击查看文章...
  4. 微信查岗,女生必备的神器!
  5. 前端 Jenkins 自动化部署
  6. CVPR 2023|淘宝视频质量评价算法被顶会收录
  7. css选择器优先级权重计算规则
  8. 一个晚上十点定时关机程序
  9. 【Xmanager】Xbrowser-Xstart远程访问RHEL5.3配置
  10. esxi主机添加缓存配置