reids学习笔记(十五)--Redis数据结构的使用场景总结

《论语》中说:温故而知新。学习了几天的redis如果不回头总结复习,有些小知识小细节难免忘记,今天就回顾复习并总结一下redis的中数据类型以及这些数据类型在企业中的实际应用场景。

看了之前的博客你可能会有个疑问,redis那么多数据类型到底怎么用呢?又是怎么提高应答客户请求的速度呢?

下面我们就来结合相关数据结构的命令看看它的用处:

1.string 字符串类型。

我能想到的就是:

1.使用redis进行缓存,比如把以写经常被访问、并且小号系统资源很大的热点数据存储在redis中,作为 缓存就好像memcached一样,比如一个网站可以把用户浏览最多的、需要多次访问数据库的、生成时间比较长的网页放入redis中,减轻网站的负担。

伪代码:

set index 网页
get.cache(index)           //访问缓存
    if(index:网页)        //如果在缓存里面,就返回网页
        return 网页;
    else
        set.cache(index:网页);   //如果没在缓存里,就访问数据库添加到缓存,便于以后访问。

          return 网页
这里还包括热点照片的缓存。网站经常被访问的图片也可以放入redis的缓存中。

2.设置或者设置个人信息

比如很多网站都保存用户的信息(邮箱、电话等),这里你就可以这样设置:mset userid:email [email protected] userid:phonenum 137****99 等,查询的时候mget userid:emile userid:phonenum 这样就完成了查询。

写到这里突然觉的在一篇文章里把所有数据类型的使用场景以及伪代码写出来,时间不允许呀,我是抽下课休息时间来写的。

所以这里先总结一下字符串的,完了我分几篇博客依次介绍吧,不然笼统写下来也没效果。

言归正传:

3.看看字符串的数据操作能干嘛吧:

当你敲代码的时候你喜欢听什么音乐呢?(个人喜欢舒缓的,从前慢不错),好了你有没有注意到你在线听歌曲有没有计数呢,就是这首歌被点播了多次,这个就可以使用redis的字符串类型做的计数器来实现。还有记录网页的被访问次数等都可以用这种计数器。

用到的命令就是incr decr

伪代码:

counter.creat(name, cli)//设置计数器的名字及客户端
counter.incr()//就是用的incr命令,在实际用用中可能是循环的
counter.get()//get name
counter.reset(name) //getset name 0作用是充值并且返回原来的counter

4.id生成器

很多网站在创建新条目的时候,都会使用id生成器为条目生成唯一标识符。

这是我博客的一篇文章,不知道你有没有注意到网址最后的数字,

有了这个数字,我们访问这个网址就直接定位到这篇文章。被创建的id都是连续的,比如你去论坛创建的uid还有发的帖子的id等。

伪代码:

idcreat(name, client)//设置id生成器的名字和客户端
idcreat.new()//incr命令自增生成
idcreat.init(n)//保留前n个id,防止抢注,需要在系统运作前执行,防止重复id出现。如:执行idcreat.init(100)下一个id就会从101开始。

5.字符串结构操作二进制数,这个很有必要说一下:

哈哈大笑。看连接吧我之前的博客:位图法统计活跃用户

补充一点,这个位图法的实现需要username和idnum(就是你在二进制中第几位)建立索引,还可以用bitcount统计在线人数:

伪代码:

online.count(time, client)//指定查询的时间和客户端
online.count.set(userid)//将在线的指定用户设置为在线,通过setbit在对应的二进制位置1
online.count.result()//返回在线人数,用bitcount命令统计二进制数中1的个数。

好了字符串的使用我就知道这些,你还知道哪些呢,希望大家可以补充。谢谢!

其他类型的具体应用场景我会找时间陆续总结,今天的总结道这,睡个午觉,午安。





猜你喜欢

转载自blog.csdn.net/lyztyycode/article/details/79578999