1、我们先来直观感受一下redis

set key01 "hello redis"get key01




redis获取所有key的API redis获取key的值_偏移量


2、基本字符串,里面存放json串,可以解决大部分问题,如果更换为列表、散列、集合、有序集合性能能提升很大。

其中redis key是二进制安全的,key取值的原则是:键值不能太长,它会消耗内存,且在数据中查找这类键值的计算成本较高,也不能太短,可读性较差。

Value为String类型,也是二进制安全的,redis字符串包含任意类型的数据。

最多存储512M的数据。

可以轮询查看有哪些原语

hep @tab

每一套类型给一套独立的原语,

help set


redis获取所有key的API redis获取key的值_偏移量_02


help ksys是一个全局的概念,keys *,可以获取刚才创建的所有字符


redis获取所有key的API redis获取key的值_偏移量_03


String类型的基本操作:

查看key的类型

type key

键是否存在

exists key

键重命名

rename key newkey

键删除

del key

获取值

get key

获取多个给定的键的值

MGET key[key ...]

如果存在则获取值,如果不存在,则创建并赋值

getest key value

字符串长度

strlen key

追加值

append key value

查看key的数据类型

object encoding key

获取子字符处,相当于截取概念

getrange key start end

索引:0从左开始,-1 从右开始

incr key:自增,返回新值,如果incr一个不是int的value则返回错误,incr一个不存在的key,则设置key为1

incrby key 2:跳2自增 incrbyfloat by 0.7: 自增浮点数

位图:归功于二进制安全,按照字节数组取存。

setbit key offset value 0/1

offset偏移量,从0开始,这个是二进制位的偏移量,

k3不存在,底层开辟一个字节的空间大小,整个二进制位01000000

返回指定值0或是1在指定区间上第一次出现的位置的偏移量

bitpos key bit start end

统计指定位区间上值为1的个数,给出的是字节的索引


redis获取所有key的API redis获取key的值_数据_04


bitcount key start end


redis获取所有key的API redis获取key的值_redis获取所有key的API_05


案例:

网站用户的上线次数统计(活跃用户)

用户ID为key,天作为offset,上线置为1 366>0000000000000000

366 /8 50byte 16 50

一个用户,一年的登陆数据只是50byte

key:zzj value:11 1 000000000000000000010000000000000000

ID为500的用户,今年的第1天上线,第30天上线

setbit u500 1 1 setbit u500 30 1 bitcount sean 0 -1 ykes u*

按天统计网站活跃用户

天作为key,用户ID为offset,上线置为1

求一段时间内活跃用户数 500 /8 366*63byte

setbit 20190115 15 1 1000000000000000 setbit 20190117 123 1 0000000000000000 setbit 20190117 123 1 0000000000000000

求1月10日到1到11日的活跃用户

bitop or aaa 20190110 20190111 bitcount aaa 0 -1