Redis打怪升级,技术干货(壹)

本文准备从以下几个方面去讲解redis打怪进阶:
1)Redis的安装。
2)Redis的数据类型及应用场景。

Redis安装

下载地址:http://redis.io/download
安装步骤:
1,# 安装gcc (因redis是c语言写的)
yum install gcc
2,#把下载好的redis-5.0.3.tar.gz放在/user/local文件夹下,并解压
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar xzf redis-5.0.3.tar.gz
cd redis-5.0.3
3,#进入到解压好的redis-5.0.3目录下,进行编译与安装
make
4,#启动并指定配置文件
src/redis-server redis.conf(注意要使用后台启动,所以修改redis.conf里的daemonize改为yes)
5,#验证启动是否成功
ps -ef | grep redis
6,#进入redis客户端
src/redis-cli
7,#退出客户端
quit
8,#退出redis服务
1)pkill redis-server
2) kill 进程号
3) src/redis-cli shutdown

redis五种数据结构:String、Hash、List、Set、Zset

1)String

字符串常用操作

set key value //存入字符串键值对
mset key value [key value ...] //批量存储字符串键值对
setnx key value //存入一个不存在的字符串键值对
get key //获取一个字符串键值
mget key [key ...] //批量获取字符串键值
del key [key...] //删除一个键
expire key seconds //设置一个键的过期时间(秒)

原子加减

incr key //将key中储存的数字值加1
decr key //将key中储存的数字值减1
incrby key increment //将key所储存的值加上increment
decrby key decrement //将key所储存的值减去decrment

应用场景:

计数器:
incr article:readcount:{文章id}
get article:readcount:{文章id}


image.png

2)Hash

相当于一个大map,多了外面一层key。然后map中的value里面又有key和value
Hash常用操作:
Hset key field value //存储一个哈希表key的键值。
Hget key field value [field value... ] //获取哈希表key对应的field键值。

Hash应用场景:

. 电商购物车
1)以用户id位key
2)商品id位field
3)商品数量为value


image.png

· 购物车操作

1)添加商品 ->hset cart:10001 10088 1

  1. 添加数量 ->hincrby cart:1001 10088 1

  2. 商品总数 ->hlen cart:1001

  3. 删除商品 ->hdel cart:1001 10088

  4. 获取购物车所有商品 ->hgetall cart:1001
    优缺点:
    ·优点
    1)同类数据归类整合储存,方便数据管理
    2)相比String操作消耗内存与cpu更小
    3)相比String储存更节约空间
    ·缺点
    1)过期功能不能使用在field上,只能用在key上
    2)Redis集群架构下不适合大规模使用。

3) List

· List常用操作
lpush key value [value ...] //将一个或多个值value插入到列表的表头(最左边)
rpush key value [value ...] //将一个或多个值value插入到列表的表尾(最右边)
lpop key //移除并返回key列表的头元素
rpop key //移除并返回key列表的尾元素


image.png

应用场景:
微博和微信公众号消息流


image.png

4)Set

· Set常用操作

sadd key member [member ...] //往集合key中存入元素,元素存在则忽略,若key不存在则新建。
srem key member [member ...] //从集合中key中删除元素
smembers key //获取集合中所有的元素
scard key //获取集合key的元素个数
srandmember key [count] //从集合key中选出count个元素。元素不从key中删除
spop key [count] //从集合key中选出count个元素,元素从key中删除。

·Set运算操作

sinter key [key ...] //交集运算
sinterstore destination key [key ...] //将交集结果存入新集合destination中
sunion key [key ...] //并集运算
sunionstore destination key [key ...] //将并集结果存入新集合destination中
sdiff key [key ...] //差集运算
sdiffstore destination key [key ...] //将差集结果存入新集合destination中

应用场景
· 1 微信抽奖小程序
image.png

1)点击参与抽奖加入集合
sadd key {userId}
2)查看参与抽奖所有用户
smembers key
3)抽取count名中奖者
srandmember key [count] / spop key [count]

2 微信微博点赞,收藏,标签
image.png

1)点赞
sadd like:{消息id} {用户id}
2)取消点赞
srem like:{消息id} {用户id}
3)检查用户是否点过赞
sismember like:{消息id} {用户id}
4)获取点赞的用户列表
smembers like:{消息id}
5)获取点赞用户数
scard like:{消息id}

3 集合操作
image.png

sinter set1 set2 set3 ->{c}
sunion set1 set2 set3 ->{a,b,c,d,e}
sdiff set1 set2 set3 ->{a}

4 集合操作实现微博微信关注模型
image.png

1)诸葛关注的人:
zhugeSet -->{yangguo,sima,luban}
2)杨过关注的人:
yangguoSet -->{zhuge,sima,luban,guojia}
3)司马关注的人:
simaSet-->{zhuge,yangguo,guojia,luban,xunyu}
4)诸葛和杨过共同关注:
sinter zhuge lisi -->{sima,luban}
5,诸葛关注的人也关注(杨过):
sismember simaSet yangguo
sismember lubanSet yangguo
6)诸葛可能认识的人:
sdiff yangguoSet zhugeSet -->{zhuge,guojia}

5 集合操作实现电商商品筛选
image.png

5)Zset

应用场景

Zset集合操作实现排行耪


image.png

1)点击新闻
zincrby hotNews:20191016 1 守护香港
2)展示当日排行前十
3)七日搜索榜单计算
zunionstore hotNews:20191016 7
4)展示七日排行前十
zrevrange hotNews:20191016 -20191023 0 10 withscores

后续更精彩!!

你可能感兴趣的:(Redis打怪升级,技术干货(壹))