Redis基础知识

…衆ロ難τιáo~ 提交于 2020-08-10 16:54:19

1、什么是Redis

Redis是一个高性能的key-value内存数据库,是一种非关系型数据库。

2、Redis的五种数据类型:

redis的五种数据类型分别为:String(字符串)、列表(List)、哈希(Hash)、Set(集合)、ZSet(有序集合)

在Redis5.0以后又加入了stream数据类型,stream的典型应用有生产者消费者队列等(list也能做,但stream更好,比如stream能够支持持久化,而list不能)。

3、Redis的作用

使用缓存的主要目的是提升查询速度和保护数据库等稀缺资源不被占满。

4、Redis的缓存穿透、缓存击穿、缓存雪崩

缓存穿透指的是在Redis中没有请求的数据,导致大量的数据库请求,且数据库中可能依然没有相应的数据。(不排除有恶意的数据库攻击),通常需要给查不到的数据设置一个空值,或者使用布隆过滤器的方式进行拦截。

缓存击穿是指一个热点key被大量访问,由于突然的缓存时间过期等原因,导致的大量的数据库请求,应对策略是对某些热点key不设置过期时间,或者使用锁限制请求。

缓存雪崩是数据库中的大量缓存过期,导致的大量数据库请求。应对策略通常是对不同的key使用随机的过期时间,保证过期时间尽可能的均匀分布,对热点数据不设置过期时间。

5、Redis的使用

启动redis服务:nohup redis-server

登录redis客户端:redis-cli

以下列举Redis常用指令:

String:

新增、更新类操作: SET key value 、 SETBIT key offset valueSETEX key seconds valueSETNX key valueSETRANGE key offset valueMSET key value [key value ...]MSETNX key value [key value ...]PSETEX key milliseconds valueINCR keyINCRBY key incrementINCRBYFLOAT key incrementDECR keyDECRBY key decrementAPPEND key value

查询类操作: GET keyGETRANGE key start endGETSET key valueGETBIT key offsetMGET key1 [key2..]STRLEN key 

详情可参考菜鸟教程:https://www.runoob.com/redis/redis-strings.html

List:

增加类操作: LINSERT key BEFORE|AFTER pivot valueLPUSH key value1 [value2]LPUSHX key valueRPUSH key value1 [value2]RPUSHX key value

删除类操作: LREM key count valueLTRIM key start stopRPOP keyRPOPLPUSH source destination

修改类操作: LSET key index value

查询类操作: BLPOP key1 [key2 ] timeoutBRPOP key1 [key2 ] timeoutBRPOPLPUSH source destination timeoutLINDEX key indexLLEN keyLPOP keyLRANGE key start stop

详情可参考菜鸟教程: https://www.runoob.com/redis/redis-lists.html

Hash:

新增、修改类操作:HINCRBY key field incrementHINCRBYFLOAT key field incrementHMSET key field1 value1 [field2 value2 ]HSET key field valueHSETNX key field value

删除类操作: HDEL key field1 [field2]

查询类操作: HEXISTS key fieldHGET key fieldHGETALL keyHKEYS keyHLEN keyHMGET key field1 [field2]HVALS keyHSCAN key cursor [MATCH pattern] [COUNT count]

详情可参考菜鸟教程: https://www.runoob.com/redis/redis-hashes.html

Set:

增加类操作:  SADD key member1 [member2]

删除类操作: SPOP keySREM key member1 [member2]

修改类操作: SMOVE source destination member

查询类操作: SCARD keySDIFF key1 [key2]SDIFFSTORE destination key1 [key2]SINTER key1 [key2]SINTERSTORE destination key1 [key2]SISMEMBER key memberSMEMBERS keySRANDMEMBER key [count]SUNION key1 [key2]SUNIONSTORE destination key1 [key2]SSCAN key cursor [MATCH pattern] [COUNT count]

详情可参考菜鸟教程: https://www.runoob.com/redis/redis-sets.html

ZSet:

增加类操作: ZADD key score1 member1 [score2 member2]

删除类操作: ZREM key member [member ...]ZREMRANGEBYLEX key min maxZREMRANGEBYRANK key start stopZREMRANGEBYSCORE key min max

修改类操作: ZINCRBY key increment memberZREVRANGE key start stop [WITHSCORES]ZREVRANGEBYSCORE key max min [WITHSCORES]

查询类操作: ZCARD keyZCOUNT key min maxZINTERSTORE destination numkeys key [key ...]ZLEXCOUNT key min maxZRANGE key start stop [WITHSCORES]ZRANGEBYLEX key min max [LIMIT offset count]ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]ZRANK key memberZREVRANK key memberZSCORE key memberZUNIONSTORE destination numkeys key [key ...]

迭代: ZSCAN key cursor [MATCH pattern] [COUNT count]

详情可参考菜鸟教程: https://www.runoob.com/redis/redis-sorted-sets.html

如果开发语言是Java,可以在程序代码中通过jedis进行操作。jedis与与redis的原生操作匹配的API。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!