redis–作为我学习的第一个nosql数据库,可以说not only sql,不仅仅是数据库,我觉得很多应用场景会需要运行在内存的缓存数据库,谈一下我的初步认识。
redis能够做些什么
我简单的列举一下他具体的缓存应用场景:
1、排行榜
利用redis的SortSet数据结构,使用zrevrange lb 0 2 withscores语句非常方便的对数据进行了从大到小排序。
2、计数器或者限速器
计数器主要利用redis中原子性的自增操作: INCR keyname,可以统计类似用户点击 数等,如果使用MySQL,频繁的读写会带来巨大的资源负担。
限速器主要是限制某个用户访问某个API的频率,判断语句设置次数,判断语句中使用expire keyname 1设置时间,然后在进行INCR keyname 进行自增记录次数。
3、好友关系
利用集合的一些命令,求交集、并集、差集解决一些共同好友、共同爱好的功能。
4、简单消息队列
除了redis自身的发布pulish和订阅subscribe模式,还可以利用List自定义实现一个队列机制,比如到货通知、发送短信,可以利用List来异步解耦,消息队列MQ就是更专业的解决此类问题的成熟技术。
5、Session
采用redis存错session后,无论用户落在哪台机器上都可以访问对应的session信息。
redis不能干什么
1、数据量大不合适
如果使用用户去保存用户的基本信息,虽然它能支持持久化,但他的持久化并不能保障数据的稳定,而且持久化太过频繁会增大redis的压力。
2、访问频率太低
保存这些数据在内存中纯属浪费资源。
redis数据类型的使用
1、String
键值对的形式
set myKey abc //设置myKey
get myKey //获取myKey的值
2、Hash
has是一个String类型的field和value的映射表,hash对象可以存很多个键值对,大概是40亿对
HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000//hmset
HGETALL runoobkey //hgetall
HSET runoobkey name redis//改值
HDEL runoobkey name//删字段
3、List
这是一个简单的字符串列表,按照插入顺序排序,可以从头部或者尾部插入,一个列表最对可以包含2的32次方-1个元素。
LPUSH JFF redisList//从头开始插入数据
LRANGE JFF 0 10//输出全部
RPUSH JFF LAST//从尾开始插入数据
LPOP JFF //删除头列表第一个元素,并输出值
4、Set
Set是String类型的无序集合,不会出现重复的数据。
SADD JFF REDIS //添加
SMEMBERS JFF//显示所有数据
SISMEMBER JFF member//判断member在不在集合JFF中
5、SortedSet
有序集合,在集合的基础上,不同的元素都会关联一个double类型的分数,通过分数对集合中的成员进行从小到大的排序,成员唯一,但是分数可以重复。
ZADD JFF 1 REDIS//添加
ZRANGE JFF 0 10 WITHSCORES//显示全部数据
ZADD JFF 1 REDISCHANGE//更改
ZRANK JFF MEMBER//返回member的index
ZREM JFF MEMBER//删除member
以上是关于redis一些基础数据类型知识,后面还会在继续更新关于redis发布订阅、事务、持久化以及各种面试理论,请继续关注。