-
redis维基百科
Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库(非关系型数据库)。 -
redis的特性
① 远程: 分为客户端,服务端.可以分别部署到不同的机器上,通多自定义协议进行传输交互,平时说的redis通常指的是redis的服务端
② 基于内存: 所有数据结构存在内存中,所有操作非常高效
③ 非关系型数据库: 本质是数据库,存储数据,区别于mysql -
redis的应用场景
① 缓存: 当系统的接口数据比较慢的时候,可以把系统数据接口的数据缓存起来,当下次取的时候,可以直接从缓存中取
② 数据存储: redis有两种非常完备的持久化机制AOF和RDB,可以定期将数据持久化硬盘中,保障数据的完整性,安全性 -
单线程redis为什么这么快
① 内存操作
② 单线程操作,避免了频繁的上下文切换
③ 采用了非阻塞I/O多路复用机制 -
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版本新增. -
基本操作
查看所有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
大数据-Redis基础
最新推荐文章于 2024-08-14 17:47:03 发布