【3】Redis数据类型与方法

1 Redis key

​ key在redis中一般是字符串类型,Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值。

  • 键的长度建议小于1024;

  • 建议采用:”object-type:id:field”就是个不错的注意,例”user:1000:password;

1.Redis-key的一般操作
set key newval1 [nx|xx] #nx:key存在时,不更新;xx:key存在时更新,不存在时插入
EXISTS key1             #判断key是否存在
DEL key1                #删除key
KEYS k*                 #搜索key值
KEYS *                  #查看该库中所有key值(生产环境慎用!!!)
TYPE key                #查看key的类型
2.Redis-key的过期时间属性
EXPIRE key1 second          #设置key的过期时间,单位s
EXPIREAT key timestamp      #设置key的过期时间,以时间戳截止,单位秒时间戳
PEXPIRE key1 milliseconds   #设置key的过期时间,单位毫秒
PEXPIREAT key timestamp     #设置key的过期时间,以时间戳截止,单位毫秒时间戳
TTL key                 #以秒为单位返回key的过期时间
PTTL key                #以毫秒为单位返回过期时间
2. 五大基本数据类型与方法
2.1 Sting
1. 基本命令
SET key value       #新增key:value
get key             #或许key对应的value
SETNX key value1    #key不存在时插入value1
STRLEN key          #获取key对应的value长度
INCR key            #key对应的数据增1,若key不存在则默认从0开始计算
DECR key            #key对应的数据减1,若key不存在则默认从0开始计算
INCRBY key 2        #key对应的数据增加给定值,若key不存在则默认从0开始计算 
DECRBY key 2        #key对应的数据减少给定值,若key不存在则默认从0开始计算
APPEND key value    #指定的value追加到该key原来值(value)的末尾,若不存在key则创建
MSET k1 v1 k2 v2    #批量创建,且批量创建具有yuanzuixing
2.2 List

list类型一般用于构造栈与队列也可以构造为后端的消息队列

1.一般命令
RPUSH l1 1      #从列表l1右添加一个值
LPUSH l1 2      #从列表l左添加一个值
LRANGE l1 0 -1  #查看列表l1所有元素
LLEN l1         #查看列表l1的长度
LPOP l1                 #弹出第一个数据
RPOP l1                 #弹出最后一个数据
LREM l1 1 5             #删除指定值(可以指定删除数量
LSET l1 3 1             #设置指定位置值
LTRIM l1 0 3            #按照给定范围对list修剪,只保留修剪部分
RPOPLPUSH l1 l1         #将最后一个元素弹出并添加为指定key的第一个元素
LINDEX l1 0             #返回list指定索引的值
LINSERT l1 before/after 4 5  #从左插入给指定位置插入元素
2.阻塞式等待弹出
BLPOP key1 timeout      #移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BRPOP key1 timeout      #移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BRPOPLPUSH source destination timeout       #从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
2.3 Hash
  • hash类似于python中的dict类型,可以存储一些对象的多个属性
  • 例如:user:id1 ==> name:jack age:12 sex:m
HSET k1 f1 v1 f2 v2     #设置哈希数据k1
HGET k1 f1              #获取值
HGETALL k1              #获取k1对应的所有值
HSETNX k1 f1 v2         #设置哈希值,如果f1不存在则成功,存在则报错,该命令具备原子性
HLEN k1                 #计算哈希k1的长度
HEXISTS k1 f2           #判断f2是否存在于hash k1 中
HVALS k1                #返回hash k1的所有值
HKEYS k1                #返回hash k1的所有键
HINCRBY k1 f1 1         #对hash f1进行递加1
HINCRBY k1 f1 -1        #对hash f1进行递减1
HDEL k1 f1              #删除hash k1的f1
2.4 set
  • set类型又被称为无序集合,集合的成员是唯一的,集合中不会出现重复的元素
  • 集合的一般运用场景有:① 比如我们博客网站常常使用到的兴趣标签,把一个个有着相同爱好,关注类似内容的用户利用一个标签把他们进行归并;②共同好友功能,共同喜好,或者可以引申到二度好友之类的扩展应用等;
SADD s s1 s2 s3 s4 s5       #向集合s中增加元素
SRANDMEMBER s               #随机返回集合s中的一个元素
SCARD s                     #查看集合s中的元素个数
SMEMBERS s                  #查看集合s中的所有元素
SMOVE s l s9                #将集合s中的一个元素移动至集合l
SPOP s                      #移除并返回集合中的一个随机元素
#集合类型重要操作
SDIFF s l                   #基于集合s求与l的差集
SUNION s l                  #求集合s与集合l的并集
SINTER s l                  #求集合s与l的交集
2.5 zset
  • zset类型又被称为有序集合,集合的成员是唯一的,在set元素的基础上增加了一个权重值;
  • 集合的一般运用场景有:① 对一定成员内的数据带权重排序,比如视频排行榜;②排序取top10等。
ZADD k1 1 m1
ZADD k1 2 m2
ZADD k1 3 m3        #向有序集合中增加新数据
ZRANGE k1 0 -1      #返回有序集合中指定范围的元素
ZRANGE k1 0 -1 withscores       #返回有序集合中指定范围的元素带着权重值
ZCARD k1            #返回有序集合中元素的个数
ZINCRBY k1 1 m5     #对有序集合中的元素进行递增/递减操作
ZCOUNT k1 1 2       #计算一定权重值区间内的元素个数
ZRANGEBYSCORE k1 +inf -inf      #返回指定权重范围的元素并按升序排列
ZREVRANGE k1 0 -1               #返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
3. 三种特殊数据类型与方法
3.1 geospatial
  • geospatial为地理位置数据类型,可以添加经纬度数据,进行两点直线距离计算,一定范围内数据查找等;
  • geo 底层原理是使用 zset来实现的,因此我们也可以使用 zset 的命令操作 geo;
  • 一般用于两点距离计算,一定范围内找朋友等;
GEOADD chain:city 116.405285 39.904989 beijing
GEOADD chain:city 121.472644 31.231706 shanghai         #添加经纬度数据
GEOPOS chain:city shanghai                              #查询成员的位置数据<经纬度>
GEODIST chain:city beijing shanghai km                  #计算两个位置之间的直线距离
GEORADIUS chain:city 120.0 31.0 1100 km                #返回指定经纬度范围内一定距离的成员
3.2 HyperLogLog

基数:不重复的元素<该数据类型可以接受一定误差>,优点是固定占用内存12K;适用场景:统计网站的UV等

PFADD k1 a b c d e
PFADD k2 a b c e f          #创建基数并添加元素
PFCOUNT k1                  #计算k1中的基数
PFMERGE k3 k1 k2            #合并k1 k2
一般适用于统计一定范围内的不重复元素的数量,重复添加时会被自动去重,且占用内存非常小,固定为12K
3.3 bitmap

​ 位:按位存储,操作二进制位进行存储,只有0、1两个数值,只用非常非常非常少的内存;适用于O/1统计计数,如登录/未登录、打卡/未打卡等两个状态的数据统计适合用这种数据类型 ;

SETBIT user:1 0 1       #设置user:1 0位置 bit为1
GETBIT user:1 0         #查看user:1 0位置 的bit值
BITCOUNT user:1         #统计key的bit为1的数量,也可以指定一定偏移区间统计
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值