redis详解

来源:互联网 发布:淘宝企业店铺有优势吗 编辑:程序博客网 时间:2024/05/17 06:18

redis详解

一、redis介绍:

1.不需要定义表结构,直接储存数据。
2.基于缓存提升系统性能
3.消息队列处理,先进先出。
4.数据储存 :a增删改查 b硬盘持久化。


二、redis.conf配置
1.doemonize yes  :表示后台启动
2.port :表示端口号 一般为了安全不用默认
3..../redis-server ..../redis.conf 启动服务
4.redis- cli -h localhost -p 3306  info 显示redis版本详细信息 


三、单进程单线程好处
1.代码更清晰,处理逻辑更简单
2.不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗 
3.不存在多进程或者多线程导致的切换而消耗CPU


四、单进程单线程弊端
1.无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善;
2.其他一些优秀的开源软件采用的模型


五、五种数据类型分别在什么情况下使用
1.string: 
类型是二进制安全的。意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象;从内部实现来看其实string可以看作byte数组,最大上限是1G字节。 
例:将一些访问频繁的静态页面(html,css,),储存到缓存中  key(注册页面,键的名字):vaule(序列话后的类型)


2.list类型:
使用Lists结构,我们可以轻松地实现最新消息排行等功能,List的另一个应用就是消息队列,可以利用List的PUSH操作,将任务存在List中,将访问高的功能存到消息对列里,可以解决高并发的问题。
例:key(体育新闻):value1(篮球新闻)

      key(体育新闻):value2(足球新闻)      

      篮球新闻先存入list 所以篮球新闻消息最新


hash类型:

hash类型是每个key对用一个HashTable,适合于存储对象,例如用户的信息对象,用户id作为key,具体信息作为value
列:车牌号(key):field1(车架号):value(值)
                             field2(发动机号):value(值)
       等等。
set类型:
在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。
Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作。
例:key(用户1):value1(关注人1)
       key(用户1):value1(关注人2)
       key(用户1):value1(关注人3)


sorted set 类型:
sorted set 类似于set ,只不过sorted set 是一种有序集合,在web中比较有用,如我们要对博客(阅读数最高)按照顶贴进行排序,
我们就可以将排序的字段设置成sorted set 的score,将具体数值设置成具体的值,每次更新数据只需要用zadd命令修改score的值就可以了。
列:总贴(key):num1(阅读量)  value1 (帖子1)
 num2(阅读量)  value2 (帖子2)
       当有人阅读进行zadd 修改num 然后通过从分高到分低的顺序读取出来。



六、五种数据类型的数据结构对比有什么不同(是否可以重复)

1.string的数据结构就是 key:value(string/int/float),出现重复key会进行覆盖。


2.list的数据结构就是   

key: value1(string/int/float)
        value2(string/int/float)
        value2(string/int/float)
value3(string/int/float)
....(元素可以重复,遵循先进先出,用作消息对列)


3.hash的数据结构   

class:  field1:value(string/int/float)
           field2:value(string/int/float)
             field3:value(string/int/float)
    ...(不可以重复,但是field对应的值可以重复)


4.set的数据结构     

key:  value1(string/int/float)
         value2(string/int/float)
         value3(string/int/float)
         ....(集合成员是唯一的,这就意味着集合中不能出现重复的数据。)


5.sort set的数据结构  

key:  value1(string/int/float) 

 value2(string/int/float)

         value3(string/int/float)
       ...(有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。