Redis教程

关于redis的总结

本文主要是介绍关于redis的总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
非关系型数据库 非关系型数据库一般是指NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,作为关系数据库的一个重要补充 。

Redis作用、适用场景

Redis常用命令

一、redis启动 ◆ 本地启动:redis-cli ◆ 远程启动:redis-cli -h host -p port -a password 二、清空Redis所有key ◆ flushdb # 清除当前数据库的所有keys ◆ flushall # 清除所有数据库的所有keys 三、查询匹配key ◆ keys * # 查看所有keys ◆ keys prefix_* # 查看前缀为"prefix_"的所有keys 四、key基本操作 ◆ exists key # 确认一个key是否存在 ◆ set key value # 设置key和value ◆ get key # 获取key的value ◆ del key # 删除一个key ◆ type key # 返回值的类型 ◆ rename oldname newname # 重命名key ◆ dbsize # 返回当前数据库中key的数目 五、String字符串 ◆ set key value # 设置指定 key 的值 ◆ get key #获取指定 key 的值 ◆ strlen key # 返回 key 所储存的字符串值的长度 ◆ mset key value [key value ...] # 同时设置一个或多个 key-value 对 ◆ mget key1 [key2..] # 获取所有(一个或多个)给定 key 的值 六、List列表 ◆ rpush key value # 在名称为key的list尾添加一个值为value的元素 ◆ lpush key value # 在名称为key的list头添加一个值为value的 元素 ◆ lpop key # 返回并删除名称为key的list中的首元素 ◆ rpop key # 返回并删除名称为key的list中的尾元素 ◆ llen key # 返回名称为key的list的长度 ◆ lindex key index # 通过索引获取列表中的元素 ◆ lrange key start stop # 获取列表指定范围内的元素 七、Set无序集合 ◆ sadd key member1 [member2] # 向集合添加一个或多个成员 ◆ smembers key # 返回集合中的所有成员 ◆ scard key #获取集合的成员数 ◆ sinter key1 key2 # 求交集 ◆ sunion key1 key2 # 求并集 ◆ sdiff key1 key2 # 求差集 八、Zset有序集合 ◆ zadd key score1 member1 [score2 member2] # 向有序集合添加一个或多个成员,或者更新已存在成员的分数 ◆ zcard key # 获取有序集合的成员数 ◆ zrange key start stop # 通过索引区间返回有序集合成指定区间内的成员 ◆ zscore key member # 查询成员的分数值 ◆ zrangebyscore key min max # 通过分数返回有序集合指定区间内的成员 九、Hash哈希 ◆ hset key field value #将哈希表 key 中的字段 field 的值设为 value ◆ hget key field #获取给定字段的值 ◆ hmset key field1 value1 [field2 values] # 一次赋值多个字段 ◆ hmget key field1 [field2] # 一次取多个字段的值 ◆ hexists key field # 判断字段是否存在 ◆ hkeys key # 获取所有字段名 ◆ hvals key # 获取所有字段值 ◆ hlen key # 获取字段数量 ◆ hgetall key # 获取所有字段的值 ◆ hdel key field # 删除字段 十、设置key的生存时间 ◆ expire key seconds #设置key的有效时间 单位为秒 ◆ ttl key #获取key的剩余有效时间,持久key返回-1,key不存在返回-2,具体时间返回秒数 Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份。 1、数据备份 redis Save 命令基本语法如下:redis 127.0.0.1:6379> SAVE 该命令将在 redis 安装目录中创建dump.rdb文件。 2、恢复数据 如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。 获取 redis 目录可以使用 CONFIG GET dir

非关系型数据库的优点:

  • 分布式计算,无需经过SQL层的解析,读写性能高;
  • 高可扩展性,基于键值对,数据没有耦合性,容易扩展;
  • 存储数据的格式丰富多样:包括key-value形式、文档形式、图片形式等,而关系型数据库则只支持基础类型。
非关系型数据库的缺点:
  • 没有标准化,不提供SQL支持,学习和使用成本较高;
  • 查询功能有限;
测试Redis时关注要点 ◆ 缓存有效,验证相关业务功能? ◆ 缓存被删除,验证相关业务功能? ◆ 缓存过期失效,验证相关业务功能? ◆ 缓存达到上限怎么处理? ◆ redis缓存服务停掉? ◆ 缓存超时,验证相关业务功能? ✓ 缓存穿透?(面试常问) ✓ 缓存雪崩? (面试常问)
  • 缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。
  • 缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。
  • 缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。
  • Redis为什么会这么快?
    1、Redis是纯内存操作,需要的时候可以以手动或自动化的方式将数据持久化到硬盘中
    2、Redis是单线程,从而避开了多线程中上下文频繁切换而浪费CPU时间片的操作。
    3、Redis中存储数据的数据类型大量使用高效率的数据结构算法,对数据的操作更加快捷高效
    4、使用底层协议不同,比如Redis自创RESP通讯协议,即保证了运行效率又保证了数据通讯
    5、使用多路I/O复用模型,非阻塞I/O
  • python获取redis key过期的信息 python获取redis key过期的信息 - WU大雄 - 博客园

常用的五种类型:string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)

1.String类型

String是最简单的类型,一个key对应一个value

String类型的数据最大512MB。
String类型的值可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的值限制在64位有符号数。
在list、set和zset中包含的独立的元素类型都是Redis String类型。

2.List类型

链表类型,主要功能是push、pop、获取一个范围的所有值等。其中的key可以理解为链表的名字。

在Redis中,list就是Redis String的列表,按照插入顺序排序。比如使用LPUSH命令在list头插入一个元素,使用RPUSH命令在list的尾插入一个元素。当这两个命令之一作用于一个空的key时,一个新的list就创建出来了。
一个List的最大长度是2^32-1个元素 (4294967295, 每个列表超过40亿个元素)。

3.Set类型

集合,和数学中的集合概念相似。操作中的key理解为集合的名字。

在Redis中,set就是Redis String的无序集合,不允许有重复元素。

Set的最大元素数是2^32-1。

Redis中对set的操作还有交集、并集、差集等。

4.ZSet类型

Zset是set的一个升级版本,在set的基础上增加了一个顺序属性,这一属性在添加修改元素时可以指定,每次指定后zset会自动安装指定值重新调整顺序。可以理解为一张表,一列存value,一列存顺序。操作中的key理解为zset的名字。

Zset的最大元素数是2^32-1。

对于已经有序的zset,仍然可以使用SORT命令,通过指定ASC|DESC参数对其进行排序。

5.hash类型

hash是最接近关系数据库结构的数据类型,可以将数据库一条记录或程序中一个对象转换成hashmap存放在redis中。
 

这篇关于关于redis的总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!