ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis基础

2022-01-29 09:07:04  阅读:207  来源: 互联网

标签:Redis 元素 基础 value a1 a3 key


1 定义

Redis 是一个高性能的 key-value 数据格式的内存缓存,NoSQL 数据库。NOSQL:not only sql,泛指非关系型数据库.关系型数据库:

序号关系数据库(mysql, oracle, sql server, sqlite)非关系数据库(Redis)
1数据存放在表中,表之间有关系。没有数据表的概念,不同的nosql数据库存放数据位置不同。
2通用的SQL操作语言。nosql数据库没有通用的操作语言。
3大部分支持事务。基本不支持事务. redis支持简单事务

2 优点

  • 异常快速 : Redis 是非常快的,每秒可以执行大约 110000 设置操作,81000 个 / 每秒的读取操作。
  • 支持丰富的数据类型 : Redis 支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。
  • 原子 – Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来。
  • Redis 是一个多功能实用工具,可以在很多如,消息传递队列中使用(Redis 原生支持发布 / 订阅)
  • 单线程特性,秒杀系统,基于 redis 是单线程特征,防止出现数据库 “爆破”

3 应用

(一)性能

Redis 中缓存热点数据,能够保护数据库,提高查询效率,如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的 SQL,就特别适合将运行结果放入缓存.这样,后面的请求就去缓存中读取,使得请求能够迅速响应。


(二)并发

还是如上图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常.这个时候,就需要使用 redis 做一个缓冲操作,让请求先访问到 redis,而不是直接访问数据库

4 数据结构

常见的数据结构: 字符串string, 哈希hash, 列表list,集合set, 有序集合zset

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B0CXIgpK-1643415617371)(temp/picture/p1_67.png)]

注意:

  1. redis是key-value的数据结构,每条数据都是⼀个键值对
  2. 键的类型是字符串
  3. 键不能重复

5.常见的操作

参考:

1.string操作

字符串类型在 Redis 中是二进制安全的,Redis中字符串类型的Value最大长度512M

设置的键不存在则为添加,如果设置的键已经存在则修改

# 设置键
set name lp # set key value
# 设置键的过期时间
setex name 3 lp # setex key seconds value
# 设置多个键值
mset a1 python a2 java a3 c # mset key1 value1 key2 value2
# 追加值
append a1 haha # append key value

# 获取键name的值
get name #get key
# 根据多个键获取多个值
mget a1 a2 a3  # mget key1 key2 ...

2 key操作

删除指定键的相关命令

#查看所有键
keys * #keys pattern 查找键,参数⽀持正则表达式
#查看名称中包含a的键
keys a*

#判断键是否存在
exists a1 #exists key1
#查看键对应的value的类型
type a1   #type key  

#查看有效时间
ttl bb #ttl key

#设置过期时间
expire a1 3 #expire key seconds

# 删除键及对应的值
del a2 a3 # del key1 key2 

3.hash操作

增删改查相关命令

# 设置单个属性
hset user name lp # hset key field value
# 设置多个属性
hmset user name lp age 18 #hmset key field1 value1 field2 value2 ...

#删除整个hash键及值
del user # del key
#删除属性
hdel u2 age #hdel key field1 field2

# 获取指定键所有的属性
hkeys u2 #hkeys key
# 获取⼀个属性的值
hget u2 name #hget key field
#获取多个属性的值
hmget u2 name age #hmget key field1 field2 ...
#获取所有属性的值
hvals u2 # hvals key

4.list操作

#在左侧插⼊数据
lpush a1 a b c # lpush key value1 value2 ...
#在右侧插⼊数据
rpush a1 0 1 # rpush key value1 value2 ...
#在指定元素的前或后插⼊新元素
linsert a1 before b 3 #linsert key before或after 现有元素 新元素

#删除指定元素:lrem key count value 
lrem a2 -2 b # 从a2列表右侧开始删除2个b
lrange a2 0 -1 # 查看列表a2的所有元素
  • 将列表中前count次出现的值为value的元素移除
  • count > 0: 从头往尾移除
  • count < 0: 从尾往头移除
  • count = 0: 移除所有

# 设置指定索引位置的元素值 :lset key index value
lset a 1 z #修改键为a1的列表中下标为1的元素值为z

#返回列表⾥指定范围内的元素:lrange key start stop
lrange a1 0 -1 #获取键为a1的列表所有元素
  1. startstop为元素的下标索引
  2. 索引从左侧开始,第⼀个元素为0
  3. 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

5.set操作

#添加元素:sadd key member1 member2 
sadd a3 zhangsan sili wangwu #向键a3的集合中添加元素zhangsan、lisi、wangwu

#删除指定元素 srem key
srem a3 wangwu #删除键a3的集合中元素wangwu

#获取所有的元素
smembers a3 #获取键a3的集合中所有元素

6.zset操作

  • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
  • 没有修改操作

# 增加:zadd key score1 member1 score2 member2
# 向键a4的集合中添加元素lisi、wangwu、zhaoliu、zhangsan,权重分别为4、5、6、3
zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan 

# 删除指定元素:zrem key member1 member2 ...
zrem a4 zhangsan #删除集合a4中元素zhangsan
# 删除权重在指定范围的元素 zremrangebyscore key min max
zremrangebyscore a4 5 6 # 删除集合a4中权限在5、6之间的元素

标签:Redis,元素,基础,value,a1,a3,key
来源: https://blog.csdn.net/weixin_44689630/article/details/122739084

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有