ICode9

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

非关系型数据库——Redis

2022-03-02 22:07:21  阅读:153  来源: 互联网

标签:关系 哈希 数据库 Redis value 列表 key 集合


文章目录


前言

Redis是一个非关系型数据库(NoSQL),数据存储大多在内存上, 会定时以追加或者快照的方式刷新到硬盘中,所以Redis数据库读取写入的速度是非常快的,MySQL的数据是存储在硬盘上的,所以Redis的数据查询效率高于MySQL。


一、Redis是什么?

1 是一个高性能的(key/value)分布式内存数据库;
2 是一个NoSql数据库,基于内存运行也支持持久化
3 Redis的持久化方案有两种:RDB和AOF;
RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件(快照)。Redis 重启会通过加载dump.rdb文件恢复数据。
AOF 在Redis中默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

二、特点

1 Redis默认有16个库(DB0-DB15);
2 Redis是单线程的,最新版本的redis支持多线程的
3 支持数据库主从复制,主库master数据会同步到从库slave,同步策略有全量同步、增量同步
4 分布式系统下,Redis可以利用哨兵模式Sentinel监控主机工作状态,在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用;
5 单个Redis命令的执行是原子性的,但 Redis没有在事务上增加任何维持原子性的机制(批量Redis指令是非原子性的),所以 Redis 事务的执行并不是原子性的。

三、应用场景

1 高速缓存
2 分布式锁(乐观锁)

四、NoSQL

  • Redis
  • mongoDB

五、常用命令

1 Redis 字符串(String)

SET key value 赋值,设置key的值
SETNX key value 只有在key不存在时设置 key 的值
SETEX key seconds value 将值value关联到key,并将key的过期时间设为 seconds (以秒为单位)
APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾
GET key 取值,获取key的值

2 Redis 哈希(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

HSET key field value 将哈希表key中的字段field的值设为value
HMSET key field1 value1 field2 value2 给哈希表key中添加多个字段(field-value)
HSETNX key field value 只有在字段 field不存在时,设置哈希表字段的值
HKEYS key 获取哈希表中的所有字段
HVALS key 获取哈希表中的所有值
HMGET key field1 field2 获取所有指定字段的值
HLEN key 获取哈希表中字段的数量
HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
HDEL key field1 field2 删除一个或多个哈希表字段

3 Redis 列表(List)

字符串列表,按照插入顺序排序

LINDEX key index 通过索引获取列表中的元素
LLEN key 获取列表长度
LPUSH key value1 value2 将一个或多个值插入到列表头部
LPUSHX key value 将一个值插入到已存在的列表头部
LRANGE key start stop 获取列表指定范围内的元素,包括开始位置和结束位置的元素
LREM key count value 移除列表元素,count移除元素的个数,从列表头开始
LSET key index value 通过索引设置列表元素的值
LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
RPOP key 移除列表的最后一个元素,返回值为移除的元素。
RPUSH key value1 value2 在列表中添加一个或多个值
RPUSHX key value 为已存在的列表添加值

4 Redis 集合(Set)

Redis 的 Set 是 String 类型的无序集合,集合成员是唯一的,Set集合中的元素无序不可重复。

SADD key member1 [member2] 向集合添加一个或多个成员
SCARD key 获取集合的成员数
SISMEMBER key member 判断 member 元素是否是集合 key 的成员
SMEMBERS key 返回集合中的所有成员
SREM key member1 [member2] 移除集合中一个或多个成员
SSCAN key cursor MATCH [pattern] [COUNT] 迭代集合 #从1开始查询2个能够匹配a*的字段SSCAN set1 1 match a* 2

5 Redis 有序集合(sorted set)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
score 分数
member 成员
ZCARD key 获取有序集合的成员数
ZRANK key member 返回有序集合中指定成员的索引
ZREM key member [member …] 移除有序集合中的一个或多个成员
ZSCORE key member 返回有序集中,成员的分数值
ZSCAN key cursor MATCH [pattern] [COUNT ] 迭代有序集合中的元素(包括元素成员和元素分值)

6 其他命令

SELECT index 选择指定下标的数据库
DBSIZE 当前库中key的个数
KEYS * 查看所有key的列表
EXPIRE key seconds 设置key的过期时间,单位秒
DEL key 删除key
EXISTS key 检查指定key是否存在
TYPE key 返回key的存储类型
RENAME key newkey 重命名key
RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey
FLUSHDB 清空当前数据库
FLUSHALL 清空所有数据库

标签:关系,哈希,数据库,Redis,value,列表,key,集合
来源: https://blog.csdn.net/qq_43281059/article/details/123238181

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

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

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

ICode9版权所有