• Redis 基础知识


    1,Redis 概念

    Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

    Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps

    2,Redis 单线程好处

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

    3,redis 的五种基本数据类型

    String(字符串):String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字。String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int

    127.0.0.1:6379> set name 'chris'
    OK
    127.0.0.1:6379> set age 20
    OK
    
    取值: get name
    get age

    List(列表)

    127.0.0.1:6379> lpush dd dd
    (integer) 1
    127.0.0.1:6379> lpush dd  aa
    (integer) 2
    127.0.0.1:6379> lpush dd cc
    (integer) 3
    127.0.0.1:6379> lpush dd ee


    127.0.0.1:6379> LINDEX dd 0 取下标为0的元素
    "ee"

    取值范围 0-4

    127.0.0.1:6379> lrange dd 0 4
    1) "ee"
    2) "cc"
    3) "aa"
    4) "dd"

    
    

    Hash(字典)

    Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObjectencodingzipmap,当成员数量增大时会自动转成真正的HashMap,此时encodinght

    HMSET hashkey name "chris" description "handsome men" likes 27

    取某个字段的值:

     HGET hashkey name

    Set(集合)

    RedisSetstring类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

    Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

    集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

     

    127.0.0.1:6379> SADD runoobkey redis
    (integer) 1
    127.0.0.1:6379> SADD runoobkey chris

    取值:返回所有的元素

    127.0.0.1:6379> SMEMBERS runoobkey
    1) "redis"
    2) "chris"

     

     

     

    Sorted Set(有序集合)

     Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

    有序集合的成员是唯一的,但分数(score)却可以重复。

    集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

     

    127.0.0.1:6379> ZADD sortset  1 redis
    (integer) 1
    127.0.0.1:6379> ZADD sortset  2 redis
    (integer) 0
    127.0.0.1:6379> ZADD sortset  3 redis
    (integer) 0
    127.0.0.1:6379> ZADD sortset  1 mongo
    (integer) 1
    127.0.0.1:6379> 
    127.0.0.1:6379> 
    127.0.0.1:6379> ZADD sortset  6 mongddo
    (integer) 1

     

     

  • 相关阅读:
    探究Spark算子-RDD
    Spark架构中YarnCluster模式作业流程
    Spark运行架构和组件
    Spark部署模式&端口号&提交作业参数说明
    Spark和Hadoop的联系和区别
    Idea中文件大小配置
    设计模式-之Scala单例模式
    HDFS集群格式化踩过的坑
    安装Spark时遇见的坑
    配置群起zookeeper的脚本所踩过的坑
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11290976.html
Copyright © 2020-2023  润新知