Redis笔记总结

目录

0,本文主要涉及

1,Redis简介

2,基础数据结构以及API 

1,字符串(String)

2,列表(List)

3,集合(Set)

4,有序集合(Sorted Set)

5,散列(Hash)

6,位图(Bitmap )

7,HyperLogLog

8,地理坐标(GEO)

3,扩展功能

1,连接相关命令

2,与 key相关基础功能

3,过期机制

4,排序功能

5,事务机制

6,发布与订阅

7,Lua 脚本支持

8,慢日志记录

4,持久化机制

1,RDB Snapshotting 快照方式

2,AOF Append-only file 操作日志备份

5,master-slave 机制&Redis Sentinel

1,master-slave 机制&数据同步复制

2,Redis Sentinel

6,更多分布式方案


0,本文主要涉及

Redis简介,基础数据结构以及API,扩展功能(自动过期、pipeline和事务、Lua脚本支持,发布订阅等等),持久化配置以及分布式集群实现,使用经验整理

1,Redis简介

Redis(REmote DIctionary Server) 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API,可以看作是数据结构服务器( Data Structures Server)
Redis(集群)本质:一套分布式抽象结构化内存数据读写系统
Redis的特性:
高性能高并发,单机10wOPS
实现代码简洁,2万多行C语言实现,原生实现了IO多路复用
API客户端支持多种语言平台
多种数据结构,字符串值,列表,集合,哈希等等,详见第二小节
丰富扩展功能,自动过期、pipeline和事务、Lua脚本支持,发布订阅等,详见第三小节
支持数据持久化,支持主从复制,支持实现高可用、分布式,详见第四小节
使用场景:
缓存,分布式锁,分部式id生成器,消息队列等等
好友关系、自动补全、摇一摇、网址缩短器、唯一计数器、排行榜、登录会话记录等等

2,基础数据结构以及API 

Redis最核心功能就是提供了这些基础数据结构以及相应的提供操作的API,这些API设计是都源自于每种数据结构最原生的操作逻辑。

1,字符串(String)

二进制安全,可以存储字符串,也可以存储数值,也可以是任意的二进制数据(byte[]),限定的最大长度(512M)
内部实现为简单动态字符串 sds (Simple Dynamic String),一种记录长度和字符数组的结构
详细API http://www.redis.cn/commands.html#string,常用的有:
最基础的获取和添加:get key,set key value(多种参数支持:XX 已存在则设置,NX不存在则设置,EX 设置过期时间单秒,PX设置过期时间时毫秒)
追加 APPEND key str123
获取并更新getset  key1 1232
批量操作 mget key1 key2 ,mset key1 value1 key2 value2 ,msetnx key1 value1  key2 value2(都不存在则添加)
原子化的数值操作:incr, incrby,incrbyfloat,decr,decrby

2,列表(List)

列表类型 key elements 有序 可重复
内部通过quicklist实现,节点是ziplist(一种节省内存的双向链表结构)的双端列表结构。(数据较少时直接使用ziplist)
详细API http://www.redis.cn/commands.html#list,常用的有:
添加元素 从尾部rpush key value1 value2,从头插入lpush key value1 value2
删除元素 从头取出 lpop key 从尾取出 rpop key; 阻塞版:blpop或brpop key timeout
修剪 ltrim key start end(start 和 end 也可以用负数来表示与表尾的偏移量)
查询长度 llen key 
索引查询元素 lindex key index
获取元素 lrange key start end
修改元素 lset key index newValue
移动元素 RPOPLPUSH mylist1 mylist2,阻塞版BRPOPLPUSHmylist1 mylist2

3,集合(Set)

集合类型 key values 无序 不重复 支持集合操作 最大可以包含(2的 32 次方-1)个元素
内部通过intset或dict实现,数据较少时intset
详细API http://www.redis.cn/commands.html#set,常用的有:
增加元素 sadd key element
删除元素 srem key element
查询集合大小 scard key
判断是否包含元素 SISMEMBER key member
随机获取count个元素srandmember key [count] 
随机获取并删除count个元素 spop key [count]
集合操作sinter(交)sdiff(差) sunion(并)

4,有序集合(Sorted Set)

有序集合类型 key scores values 根据score有序 无重复
内部通过skiplist和dict实现,(数据较少时直接使用ziplist)
详细API http://www.redis.cn/commands.html#sorted_set,常用的有:
增加元素 zadd key score1 element1 score2 element2
删除元素 zrem key elements
删除分值排行一定范围的元素 zremrangebyrank key start end
删除一定分值范围元素 zremrangebyscore key minSxore maxScore
查询集合大小 zcard key
查询元素分值 zscore key element
增加元素分值 zincrby key increScore element
查询一定分值范围元素数量 zcount key minSxore maxScore
获取分值排行一定范围的元素 zrange key start end,倒序版 zrevrange
获取一定分值范围元素 zrangebyscore key minSxore maxScore
查询元素分值排名 zrank ,倒序版 zrevrank,一定分值范围版zrevrangebyscore
集合操作:zinterstore,zunionstore

5,散列(Hash)

哈希类型 key field value
内部通过dict实现,(数据较少时直接使用ziplist)
详细API http://www.redis.cn/commands.html#hash,常用的有:
添加获取

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值