Redis基础总结

Redis概念理解

  • 是开源软件
  • 是内存数据结构存储,用于数据库,缓存,消息代理
  • 支持:字符串,哈希,列表,集合,数组集合,位图,高压缩算法以及地图索引等数据结构
  • Redis 支持集群,lua 脚本,以及 LRU,事物以及不同级别的磁盘持久化
  • 可提高高可用的 Redis Sentinel 的集群方案

Redis优点

  1. Redis 是把数据存放在内存当中,所以它的运行速度会非常快
  2. Redis 具有多种数据存储结构
  3. .Redis 具有持久化的功能
  4. Redis 上的数据可以设置过期
  5. Redis 支持集群,而且可以自动切换
  6. 跨平台 支持多种语言客户端

Redis用途

缓存(StackOverFlow),数据库(微博),消息中间件(队列,微博)

什么是缓存?
缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。缓存往往使用的是RAM(断电即掉的非永久储存).

什么是消息中间件?
关注于数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统

Redis key

注:以下指令后面写想指定的key或者相应指令

指令含义
existskey是否存在
type返回key类型
keys返回指定模式的key
randomkey随机选择一个key
rename重命名
del删除key
expire为key设置指定时间
ttl返回key剩余过期秒数
select通过索引选择数据库
move把当前key移动到指定数据库

五种基本数据类型

  1. String:二进制安全的,可包含任何数据,最大上线1G=1024MB字节.
    应用场景:比如想知道什么时候封锁一个 IP 地址(访问超过几次)。INCRBY 命令让这些变得很容易,通过原子递增保持计数。
指令含义
set key value设置 key 对应 string 类型的值
setnx key value如果 key 不存在, 设置 key 对应 string 类型的值
get key获取 key 对应的 string 值
getset key value先获取 key 的值,再设置 key 的值
mget key1 key2 …keyN一次获取多个 key 的值
mset key1 value1 …keyN valueN一次设置多个 key 的值
msetnx key1 value1 …keyN valueN一次设置多个 key 的值,但是不会覆盖已经存在的 key
incr key对 key 的值做++操作, 并返回新的值
decr key对 key 的值做–操作
incrby key integer对 key 加上指定值 , key 不存在时候会设置 key,并认为原来的 value 是 0
decrby key integer对 key 减去指定值。decrby 完全是为了可读性,我们完全可以通过 incrby 一个负值来实现同样效果,反之一样
  1. Hash:Redis 的 Hash 实际是内部存储的Value 为一个 HashMap,并提供了直接存取这个 Map 成员的接口.
    应用场景:比如存储用户信息,包含Id为查找key,value为name,age,birthday.用Hash存储的形式是:Id作为key,把name,age,birthday作为Map的属性名(即field),值作为Map的属性值,可以直接通过key(Id)+field(name,age等属性标签)操作属性数据了.这样可以既不需要重复存储数据,也不会带来序列化和并发修改控制的问题.
指令含义
hdel key field删除指定的 hash field
hlen key返回指定 hash 的 field 数量
hset key field value设置 hash field 为指定值
hget key field获取指定的 hash field

注:一些常用的指令跟String类型的指令相似只是把开头s改一下就行了
3. List 类型:Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis 内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。
应用场景:我们可以轻松地实现最新消息排行等功能。Lists 的另一个应用就是队列,可以利用 Lists 的 PUSH 操作,将任务存在 List 中,然后工作线程再用 POP 操作将任务取出进行执行。

指令含义
lpush key string在 key 对应 list 的头部添加字符串元素
rpush key string在 key 对应 list 的尾部添加字符串元素
llen key返回 key 对应 list 的长度
lrange key start end返回指定区间内的元素
ltrim key start end截取 list 指定区间内元素
lset key indexvalue设置 list 中指定下标的元素值
lrem key count valuee 从 List 的头部 (count正数)或尾部 ( count 负数)删除一定数量 ( count)匹配 value 的元素
lpop key从 list 的头部删除并返回删除元素
rpop key从 list 的尾部删除并返回删除元素
blpop key1 …keyN timeout从左到右扫描,返回对第一个非空 list 进行lpop 操作并返回
  1. Set类型:是无序集合,最大可以包含(2 的 32 次方-1)个元素。
    应用场景:Redis set 对外提供的功能与 list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list所不能提供的。
    Redis 还为集合提供了求交集、并集、差集等操作。
指令含义
sadd key member添加一个 string 元素到 key 对应 set 集合中
srem key member从 key 对应 set 中移除指定元素
spop key删除并返回 key 对应 set 中随机的一个元素
srandmember key同 spop,随机取 set 中的一个元素
smove srckey dstkey member从 srckey 对应 set 中移除 member 并添加到dstkey 对应 set 中,整个操作是原子的
Scard key返回 set 的元素个数
sismember key member判断 member 是否在 set 中,
sinter key1 key2 …… keyN返回所有给定 key 的交集
sinterstore dstkey key1 … keyN返回所有给定 key 的交集, 并保存交集存到 dstkey 下
sunion key1 key2 … keyN返回所有给定 key 的并集
sunionstore dstkey key1 …keyN返回所有给定 key 的并集, 并保存并集到 dstkey 下
sdiff key1 key2 …keyN返回所有给定 key 的差集
sdiffstore dstkey key1 …keyN返回所有给定 key 的差集并保存差集到 dstkey 下
smembers key返回 key 对应 set 的所有元素无序的
  1. Sorted Set类型:Sorted Set 是有序集合, 它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定, 每次指定后, 会自动重新按新的值调整顺序。
    应用场景:以某个条件为权重,比如按顶的次数排序,比如网易云音乐排行榜实现;另外还可以用 Sorted Sets 来做带权重的队列,比如普通消息的 score 为 1,重要消息的 score 为 2,然后工作线程可以选择按 score 的倒序来获取工作任务。让重要的任务优先执行。
指令含义
zadd key score member添加元素到集合,元素在集合中存在则更新对应 score
zrem key member删除指定元素
zincrby key incrmember增加对应 member 的 score 值
zrank key member返回指定元素在集合中的排名(下标)
zrevrank key member同上,但是集合中元素是按 score 从大到小排序
zrange key start end类似 lrange 操作从集合中去指定区间的元素
zrevrange key start end同上,返回结果是按 score 逆序的
zrangebyscore key min max返回集合中 score 在给定区间的元素
zcount key min max返回集合中 score 在给定区间的数量
zcard key返回集合中元素个数
zscore key element返回给定元素对应的 score
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值