redis从入门到精通

【一】redis是什么?

redis是一个开源的,基于键值的存储系统,具有String,Hash,List,Set,Sort Set多种数据结构,高性能,功能丰富

【二】redis的特性?

速度快:因为redis是纯内存操作,单线程模型,导致redis的性能非常的快,官方给出的数据,每秒可以处理10万次读写操作

持久化:redis可以通过rdb或者aof,定期通过异步操作将数据flush到硬盘上进行保存,从而即使因为不可抗拒的因素宕机,重启之                后数据依旧存在。

多种数据结构类型:除上面提到的五种数据结构类型,还包括了BtMaps位图,HyperLogLog超小内存唯一值计数,GEO地理信息                 定位。

支持多种编辑语言:

功能丰富:可以实现诸如发布订阅,Lua脚本,事务,pipeline等相关功能

简单:      redis不依赖外部库,单线程模型

主从复制:

高可用,分布式:redis-sentinel支持高可用,redis-cluster支持分布式

【三】redis的缺点

redis数据存储的容量受到内存的限制,不能用作海量数据的高性能读写,因此redis适合在较小数据量的高性能操作和运算上

【四】redis的数据结构类型

【五】redis常见的使用场景

String:常规的键值对缓存应用,通过incr,decr实现微博数,粉丝数常见社交系统的计数

Hash:存储部分的数据,免于和数据库交互,增加用户体验

List:list的实现是一个双向链表,通过push和pop操作从列表的头部或者尾部添加或者删除元素,相当于既可以当作栈,又可以当作队列

使用场景:使用list构建消息队列系统,比如用redis用作日志收集器,多个端点将日志信息写入redis,然后一个worker统计将日志写到磁盘中

                  取最新N个数据的操作

Set:对外提供的功能和list类似,是一个列表的功能,无序,特殊之处是其可以自动排重。可以实现交集,并集,差集。比如贴吧中的共同关注

sort set :通过提供一个权重参数,使得数据自动排序,排行榜

详细概述

缓存:合理的使用缓存不仅能够提升网站的访问速度,还能大大降低数据库的压力,redis提供了键过期的功能,也提供了灵活的键淘汰策略。

排行榜:redis提供有序的集合数据类型能实现复杂的排行榜应用

计数器:商品的浏览量,视频的播放量,为了保证数据的实时性,每次浏览+1,并发量高的时候每次如果都请求数据库的话,无疑给后者增加了很大的压力,redis提供了incr命令实现计数器的功能,内存操作,性能非常的好

分布式会话:集群模式下,在应用不多的情况下一般使用容器自带的session复制功能就可以,但当集群过多的话,session复制会过多的浪费资源,一般会搭建以redis等内存数据库位中心的session服务,session不在由容器管理拉。

分布式锁:系统的复杂性必会走向分布式,但分布式却因此带来的并发问题,如全局id,减酷讯,秒杀。并发量不大的场景可以使用数据库的悲观锁,乐观锁实现。但在并发量高的场合中,利用数据库锁机制来控制资源的并发访问时不理想的,大大影响了数据库的性能。可以用redis的setnx功能编写分布式锁,如果设置返回1说明获取锁成功。

社交网络:点赞,踩,关注/被关注,共同好友社交

最新列表:redis列表结构,Lpush可以在列表头部插入元素,Ltrim限制列表的数量

消息系统:redis提供发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统

【六】常用的命令

通用命令:

keys-->keys * :获取所有得key

dbsize-->dbsize:获取key得总和个数

exists key:判断key是否存在,存在返回1,不存在返回0

del key:删除指定得key,或者删除多个key(del name age)

type key:判断key的类型

expire key second:给key设置一个秒级的过期时间

      ttl key:查看key剩余的过期时间(-2不存在,-1代表存在,没有设置过期时间)

      persist key:撤销key的过期时间

String:get,set,del,incr,decr,incrby,decrby,incrbyfloat,mget,mset

getset:设置新得值,返回旧的值

append key value:追加新的值

getrange:返回索引之间的数据

setrange:设置索引的数据

setnx:key不存在才设置值

set key value xx:key存在的时候才设置值

Hash:hget,hset,hdel,hexists,hlen,hmget,hmset

hgetall key:获取所有的field和value

hvals key:获取所有的value

hkeys key:获取所有的field

List:

lpush 从列表左侧头部添加数据

rpush 从列表右侧头部添加数据

lpop 从给左侧头部取出一个元素

rpop 从右侧尾部取出一个元素

lrange key 0 -1:取出全部的元素

lrem:删除列表指定的元素

lindex:获取对应下标的值   ;llen:获取列表的长度

ltrim:修剪列表 ltrim key begin end

lset:修改坐标小的值 lset key 下标 value

linsert key before 下标 value:指定位置添加元素

set常用命令,集合中的元素无序且唯一

sadd:sadd key value添加元素

smembers:smembers key查看集合中所有元素

srem:srem key value删除集合中指定元素

scard:scard key返回集合中元素的个数

SRandMember:

smove:将一个集合的元素转移到另外一个集合中

spop:从集合中随机移出一个元素

sismember:sismember key value判断value是否存在集合中,存在返回1

sscan:使用游标获取集合中的值

sunion:集合并运算 sunion key1 key2

sunionstore:sunionstore key key1 key2 将并集合并到key中

sinter:公共的合并一起 sinter key1 key2

sinterstore:sinterstore key key1 key2

sdiff:sdiff key1 key2 差集 key1 - key2

sdiffstore:sdiffstore key key1 key2

zset相关命令

zadd:添加元素 zadd key score value

zrem key :删除元素

zscore key value;返回key的分数

zincrby key 增加或减少元素的分数

zcard key返回元素的总个数

zrange:返回指定索引范围内的元素

zrangebyscore key start end withscores

zcount key minScore maxScore:返回分数之间的个数

zremrangebyscore key minScore maxScore删除指定分数内的元素

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值