大数据-Redis基础

  1. redis维基百科
    Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库(非关系型数据库)。

  2. redis的特性
    ① 远程: 分为客户端,服务端.可以分别部署到不同的机器上,通多自定义协议进行传输交互,平时说的redis通常指的是redis的服务端
    ② 基于内存: 所有数据结构存在内存中,所有操作非常高效
    ③ 非关系型数据库: 本质是数据库,存储数据,区别于mysql

  3. redis的应用场景
    ① 缓存: 当系统的接口数据比较慢的时候,可以把系统数据接口的数据缓存起来,当下次取的时候,可以直接从缓存中取
    ② 数据存储: redis有两种非常完备的持久化机制AOF和RDB,可以定期将数据持久化硬盘中,保障数据的完整性,安全性

  4. 单线程redis为什么这么快
    ① 内存操作
    ② 单线程操作,避免了频繁的上下文切换
    ③ 采用了非阻塞I/O多路复用机制

  5. redis的数据类型
    ① String
    是redis的基本类型,一个key对应一个value,例: set(name,“Tom”)
    string类型是二进制安全的,意味着redis的string可以包含任何数据,比如图片或者对象
    一个redis中字符串value最多可以是512M

    ② List
    单键多值. redis列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部或者尾部,底层实现实际是个双向链表,对两端的操作性能很高,通过索引下标操作中间的节点性能较差.

    ③ Set
    set对外提供的功能与list类似是个列表,但是set可以自动排重

    ④ Hash
    hash是一个键值对集合,是一个string类型的field和value的映射表,hash特别适合用于存储对象,类似java中的map<string,object>

    ⑤ Zset
    redis中的有序集合Zset,没有重复元素,但是每个成员都关联了一个评分(score),这个评分(score)被用来按照最低到最高的方式排序集合,集合元素是唯一的,评分可以重复.

    ⑥ HyperLogLog
    redis在2.8.9版本添加了HyperLogLog,是用来做基数统计的算法,优点是,在输入元素的数量或者体积非常大的时候,计算基数所需的空间总是固定的,并且是最小的.在redis里,每个HyperLogLog键只需要花费12KB内存,就可以计算接近2^64个不同元素的基数,这和计算基数时,元素越多耗费内存越多的集合形成鲜明对比,但是HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,所以HyperLogLog 不能像集合那样,返回输入的各个元素.例: 数据集{1,2,3,5,7,5,7,8},那么这个数据集的基数集为{1,2,3,5,7,8},基数(不重复元素)为5,基数估计是在误差可接受范围内快速计算基数.

    ⑦ pub/sub 发布订阅
    redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息.redis客户端可以订阅任意数量的频道.

    ⑧ GEO
    redis GEO主要用于存储地理位置信息,并对存储的信息进行操作,该功能在redis3.2版本新增.

  6. 基本操作
    查看所有key keys *
    判断key是否存在 exists key
    查看键类型 type key
    删除某个键 del key
    设置key过期时间 expire key seconds
    查看还有多少秒过期 ttl key -1表示永不过期 -2表示已经过期
    查看当前数据库key数量 dbsize
    清空当前库 flushdb
    通杀全部库 flushall

    ① string常用命令
    添加键值对 set key
    查询键值对 get key
    将给定value追加到原值末尾,没有key时新增key append key value
    获得值的长度 strlen
    在key不存在时设置key的值 setnx key value
    将key中存储的数字值加1,只对数字操作,如果为空,新增值为1 incr key
    将key中存储的数字值减1,只对数字操作,如果为空,新增值为-1 decr key
    将key中存储的数字值增减,自定义步长 incrby/decrby key 步长
    同时设置多个key-value mset key1 value1 key2 value2 …
    同时获取多个value mget key1 key2 key3
    同时设置多个kv,仅当所有给定key不存在 msetnx key1 value1 key2 value2
    获得值的范围 getrange key 起始位置 结束位置
    用value覆写key所存储的字符串值,从起始位置开始. setrange key 起始位置 value
    设置键值的同时设置过期时间 setex key 过期时间 value
    以新换旧,设置新值同时获得旧值 getset key value

    ② List常用命令
    从左/右插入一个或多个值 lpush/rpush key value1 value2 value3
    从左/右吐出一个值,值在键在,值完键完 lpop/rpop key
    按照索引下标获得元素,从左到右,元素不丢 lrange key start end
    获得列表长度 llen key
    在value后面插入newvalue linsert key before value pivot newvalue
    (before|after 表示在值前,在值后面 pivot: 在集合list哪个值前面)

    ③ Set类型常用命令
    将多个元素加入集合key中,已经存在的被忽略: sadd key member1 member2
    去出该集合所有值: smembers key
    判断集合key是否含有该value值,有1无0: sismember key member
    删除集合中的某个元素 srem key member1 member2
    随机从集合中吐出一个值: spop key
    随机从集合中吐出n个值,不会删除: srandmember key n
    返回两个集合交集: sinter key1 key2
    返回两个集合并集: sunion key1 key2
    返回两个集合差集: sdiff key1 key2

    ④ Hash类型常用命令
    给key集合中的field键赋值value: hset key field value
    从key集合field取出value: hget key field
    批量设置hash值: hmset key field1 value1 field2 value2 field3 value3
    批量取出hash值: hmget key field1 field2 field3
    查看hash表key,给定的field是否存在,有1 无0: hexists key field
    列出hash集合所有field: hkeys key
    列出hash集合所有value: kvals key

    ⑤ Zset类型常用命令
    将多个member及其score加入有序集合key中: zadd key score1 value1 score2 value2
    返回有序集key,下标在start stop之间的元素,带withscore,可以让分数一起返回:
    1) zrange key start stop withscores (升序)
    2) zrevrange key start stop withscores (降序)
    返回有序集key,所有score介于min和max之间(包含min,max)的member,按score升序排序: zrangebysocre key min max withscores limit offset count
    zrevrangebysocre key min max withscores limit offset count
    为元素的score加上增量: zincrby key increment member
    删除集合指定值元素: zrem key value
    统计该集合分数区间内的元素个数: zcount key min max
    返回该值在集合中的排名,从0开始: Zrank key value

    ⑥ HyperLogLog
    添加指定元素到HyperLogLog中: pfadd key element1 element2
    返回给定HyperLogLog的基数估算值: pfcount key
    将多个HyperLogLog合并为一个: pfmerge destkey sourcekey1 sourcekey2

    ⑦ pub/sub
    订阅一个或多个符合给定模式的频道: psubscribe pattern1 pattern2
    查看订阅与发布系统状态: pubsub subcommand
    将消息发送到指定频道: publish channel message
    退订所有给定模式的频道: punsubscribe pattern
    订阅给定的频道信息: subscribe channel1 channel2
    退订给定的频道: unsubscribe channel

    ⑧ GEO
    添加地理位置坐标: geoadd key longitude(经度) latitude(维度) member(位置名)
    获取地理位置坐标: geopos key member 不存在返回nil
    返回两个给定位置之间距离: geodist key member1 member2 [m米|km千米|ft英尺|mi英里]

    以给定经纬度为中心,返回与中心距离不超过给定最大距离的所有位置元素:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
    georadiusbymember 和georadius一样,区别在于georadiusbymember 的中心点是由给定的位置元素决定的,而不是使用经纬度
    GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
    参数说明:WITHDIST: 在返回位置元素的同时,将位置元素与中心之间的距离也一并返回。
    WITHCOORD: 将位置元素的经度和维度也一并返回。
    WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
    COUNT 限定返回的记录数。
    ASC: 查找结果根据距离从近到远排序。
    DESC: 查找结果根据从远到近排序。

    返回多个位置对象的geohash值: geohash key member1 member2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值