redis-基本数据结构

String

set 
get 
setex:设置值时候同时设置过期时间
setnx:当不存在的时候才设置新值

List

rpush
rpop
lpush
lpop
lrange index1 index2
lindex key idnex1
ltrim key index1 index2

hash

hset key key1 value1
hget key key1
hgetall key 

set

sadd key v1
sadd key v1 v2 v3
smemebers key 
sismember key v1
scard key #key代表的set的成员个数
spop 弹出一个

zset

zadd key score value
zrange key index1 idnex2
zrangebyscore key score1 score2
zcard key 
zrank key value1

当多个客户端操作redis-server的同一个数据变量的时候,容易出现丢失修改。比如一个client将数据a 拿到 += 20 然后再写入,另一个client 同时拿到数据a += 10,之后再写入。这时显然后写入的会覆盖掉之前写入的,导致修改被丢失了。redis 通过加锁操作来限制并发执行。

set clock true ex 5 nx

位图

setbit key 1 1#对key变量设置第2bit为1
bitcount key index1 idnex 2 #key [index1,idnex2]1的个数
bitpos key 1 index1 idnex2 #key [index1,index2(单位:字节)]中第一个1 的索引位置

#setbit 只能对单个位处理 ,bitfield 可以对多个位进行处理 <=64

bitfield key get u4 0 #从第一个位开始取4个位组成无符号整数
bitfield key set u8 8 97 #从第9位开始的8bit 设置为无符号数97
bitfield key incrby u4 2 1 # 从第3位开始的4位 代表的无符号数+1

hyperloglog 使用场景:大数据量下的不准确去重计数,它并不是将数据保存在容器中,而是将数据元素hash成为64bit,前14bit映射到桶,计算后面50bit最大低位为0 比如100 就是3 10 就是2,需要6bit就可存储结果,所以hyperloglog 总共需要12kB。注意:与set的区别是,set可以拿到每个具体存储的元素,而hyperloglog只是计数。

pfadd key v1 将元素v1 加入
pfcount key 
pfmerge key1 key2

布隆过滤器:hyperloglog 使用 能计数 但是并不能确定是否包含某个元素,如果某网站需要将用户未浏览过的信息推送给用户,那么可以使用该数据结构。但是注意该数据结构存在一定的误判率,即可能出现你浏览过的内容被推送过来。但是对于大部分用户是未被推送的内容。原理就是将数据元素 用k个hash函数 得到对应的值,并将位数组相应位置置1。那么判断的时候,同样需要hash函数hash,如果相应位数组位置存在 一个为0 则 肯定不存在,如果全为1则有很大的可能存在。

bf.add key v1
bf.exists key v1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值