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 value 、 SETEX key seconds value 、 SETNX key value 、 SETRANGE key offset value 、 MSET key value [key value ...] 、 MSETNX key value [key value ...] 、 PSETEX key milliseconds value 、 INCR key 、 INCRBY key increment 、 INCRBYFLOAT key increment 、 DECR key 、 DECRBY key decrement 、 APPEND key value
查询类操作: GET key 、 GETRANGE key start end 、 GETSET key value、 GETBIT key offset 、 MGET key1 [key2..] 、 STRLEN key
详情可参考菜鸟教程:https://www.runoob.com/redis/redis-strings.html
List:
增加类操作: LINSERT key BEFORE|AFTER pivot value 、 LPUSH key value1 [value2] 、 LPUSHX key value 、 RPUSH key value1 [value2] 、 RPUSHX key value
删除类操作: LREM key count value 、 LTRIM key start stop 、 RPOP key 、 RPOPLPUSH source destination 、
修改类操作: LSET key index value 、
查询类操作: BLPOP key1 [key2 ] timeout、 BRPOP key1 [key2 ] timeout 、 BRPOPLPUSH source destination timeout 、 LINDEX key index 、 LLEN key 、 LPOP key 、 LRANGE key start stop 、
详情可参考菜鸟教程: https://www.runoob.com/redis/redis-lists.html
Hash:
新增、修改类操作:HINCRBY key field increment 、 HINCRBYFLOAT key field increment、 HMSET key field1 value1 [field2 value2 ] 、 HSET key field value 、 HSETNX key field value
删除类操作: HDEL key field1 [field2]
查询类操作: HEXISTS key field 、 HGET key field 、 HGETALL key 、 HKEYS key 、 HLEN key 、 HMGET key field1 [field2] 、 HVALS key 、 HSCAN key cursor [MATCH pattern] [COUNT count]
详情可参考菜鸟教程: https://www.runoob.com/redis/redis-hashes.html
Set:
增加类操作: SADD key member1 [member2] 、
删除类操作: SPOP key 、 SREM key member1 [member2] 、
修改类操作: SMOVE source destination member 、
查询类操作: SCARD key 、 SDIFF key1 [key2] 、 SDIFFSTORE destination key1 [key2] 、 SINTER key1 [key2] 、 SINTERSTORE destination key1 [key2] 、 SISMEMBER key member 、 SMEMBERS key 、 SRANDMEMBER 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 max 、 ZREMRANGEBYRANK key start stop 、 ZREMRANGEBYSCORE key min max 、
修改类操作: ZINCRBY key increment member 、 ZREVRANGE key start stop [WITHSCORES] 、 ZREVRANGEBYSCORE key max min [WITHSCORES] 、
查询类操作: ZCARD key 、 ZCOUNT key min max 、ZINTERSTORE destination numkeys key [key ...] 、 ZLEXCOUNT key min max 、 ZRANGE key start stop [WITHSCORES] 、 ZRANGEBYLEX key min max [LIMIT offset count]、 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 、 ZRANK key member 、 ZREVRANK key member 、 ZSCORE key member 、 ZUNIONSTORE 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。
来源:oschina
链接:https://my.oschina.net/u/4469818/blog/4341216