基础指令
- select 数字:切换到其他数据库
- flushdb:清空当前数据库
- flushall:清空所有数据库
- dbsize:查看数据库大小
- exists key1[key2 …]:判断当前的key是否存在
- keys *:查看所有的key
- expire key 时间:设置过期时间,单位:秒
- ttl key:查看当前key的剩余时间
- type key:查看key类型
- strlen key:获取key的长度
- move key 数字n:移除当前key到数据库(数字n)
- del key1[key2 …]:删除key
字符串string
- set key value:存储
- get key:获取
- getset key value:先get后set
- mset key1 val1[key2 val2…]:同时设置多个
- mget key1[key2…]:同时获取多个
- append key value:向key后面追加字符串,如果当前key不存在,就相当于set
- incr key:key的value值自增1,如果value是字符串,则报错
- decr key:key的value值自减1,如果value是字符串,则报错
- incrby key increment:key的value值增加increment,如果value是字符串,则报错
- decrby key decrement:key的value值减少decrement,如果value是字符串,则报错
- getrange key start end:获取[start,end]的字符串
- setrange key offset value:替换offset指定位置开始的字符串
- setex key seconds value(set with expire):设置过期时间
- setnx key value(set if not exist):不存在再设置
- msetnx key1 val1[key2 val2 …]:要么一起成功,或一起失败
列表list(linkedlist)
可以添加一个元素到列表的头部(左边)或者尾部(右边)
- lpush key val1[val2 val3…]:插到列表左部
- rpush key val1[val2 val3…]:插到列表右部
- lpop key:从列表左部删除一个元素
- rpop key:从列表右部删除一个元素
- rpoplpush key1 key2:移除列表的最后一个元素,将它移动到新的列表中
- lset key index val:设置key的index下标位置的值为val,只有存在这个下标才可以使用
- linsert key before val1 val2:将某个val1插入到列表中val2的前面
- linsert key after val1 val2:将某个val1插入到列表中val2的后面
- lindex key index:获取列表指定index下标索引的元素
- lrange key start end:获取[start end]的元素(end为-1时即列表中全部元素)
- llen key:获取列表长度
- lrem key count val:移除list集合中count指定个数的val,从前往后删除,精确匹配
- ltrim key start end:截取list的[strart,end]之间的所有元素,这个key已经被改变了,只剩下截取的元素
哈希hash(map)
- hset key field value:添加一个hash值
- hget key field:获取指定key的field的值
- hmset key field1 val1 field2 val2…:添加多个值
- hmget key field1 field2…:获取多个field的值
- hgetall key:获取key中的所有值
- hdel key field:删除key中指定的field值
- hlen key:获取key中元素的个数
- hexists key field:判断key中field是否存在
- hkeys key:获取key中所有的field
- hvals key:获取key中所有的val
- hincrby key field 数字n:给hash中的字段增加n
- hsetnx key field val:如果存在则可以设置,否则不行
集合set
- sadd key val:向key集合添加元素
- smembers key:查看指定key的所有元素
- sismember key val:查看指定key的指定val元素
- scard key:获取key集合的元素个数
- srem key val:移除指定key的指定元素
- srandmember key 数字n:获取指定集合的n个随机元素
- spop key:随机删除key集合的元素
- smove key1 key2 val:将集合指定的值移动到另一个集合中
- sdiff key1 key2:差集
- sinter key1 key2:交集
- sunion key1 key2:并集
有序集合sortedset(不允许重复元素)
- zadd key score val:向key添加元素
- zrange key 数字1 数字2:显示key中数字1到数字2的字段
- zrangebyscore key -inf +inf:显示成绩在负无穷到正无穷全部的用户,从小到大
- zrangebyscore key -inf +inf withscores:显示全部的用户并附带成绩
- zrem key val:移除key中的指定元素
- zcard key:获取key中元素的个数
- zrevrange key 数字1 数字2:将key中的值从大到小排序
- zcount key min max:获取key中指定区间成员的数量
基数统计HyperLogLog
- pfadd key val1 val2…:添加,影响基数估值则返回1,否则返回0,若key不存在则创建
- pfcount key:获得基数值
- pfmerge key key1 key2…:把key1和key2等合并为key
127.0.0.1:6379> pfadd m1 1 2 3 4 1 2 3 2 2 2 2
(integer) 1
127.0.0.1:6379> pfcount m1
(integer) 4
127.0.0.1:6379> pfadd m2 3 3 3 4 4 4 5 5 5 6 6 6 1
(integer) 1
127.0.0.1:6379> pfcount m2
(integer) 5
127.0.0.1:6379> pfmerge mergeDes m1 m2
OK
127.0.0.1:6379> pfcount mergeDes
(integer) 6
使用场景
- 统计注册IP数
- 统计每日访问IP数
- 统计页面实时UV数
- 统计在线用户数
- 统计用户每天搜索不同词条的个数
位图bitmap
位图(bitmap)同样属于string数据类型,Redis中一个字符串类型的值最多能存储512MB的内容,每个字符串由多个字节组成,每个字节又由8个Bit位组成。位图结构正是使用“位”来实现存储的,它通过将比特位设置为0或1来达到数据存取的目的,这大大增加了value存储数量,它存储上限为2^32
- setbit key offset value:在对二进制位进行设置之后,将返回二进制位被设置之前的旧值作为结果
- getbit key offset:获取位图指定偏移量上的二进制位的值
- bitcount key [start end]:统计位图中值为1的二进制位数量
- bitpos key value [start end]:在位图中查找第一个被设置为指定值的二进制位
- bitop operation destkey key[key…]:对一个或多个位图执行指定的二进制位运算,并将运算结果存储到指定的键中
使用场景
- 用户签到
- 统计活跃用户(用户登录情况)
- 统计用户是否在线
- 实现布隆过滤器
GeoHash
- geoadd 集合名称 经度 维度 元素 …:指定携带集合名称以及多个经纬度名称三元组
- geodist 集合名称 元素1 元素2 距离单位:用来计算两个元素之间的距离
- geopos 集合名称 元素1 …:获取集合中任意元素的经纬度坐标
- geohash 集合名称 元素:获取元素的经纬度编码字符串
- georadiusbymember 集合名称 元素 数字 距离单位 count 数据 排序方式:查询指定元素附近的其他元素
127.0.0.1:6379> geoadd company 116.489033 40.007669 meituan
(integer) 1
127.0.0.1:6379> geoadd company 116.562108 39.787602 jd 116.334255 40.027400 xiaomi
(integer) 2
127.0.0.1:6379> geodist company juejin ireader km
"10.5501"
127.0.0.1:6379> geopos company ireader
1) "116.5142020583152771"
2) "39.90540918662494363"
127.0.0.1:6379> geopos company juejin ireader
1) "116.48104995489120483"
2) "39.99679348858259686"
1) "116.5142020583152771"
2) "39.90540918662494363"
127.0.0.1:6379> geohash company ireader
1) "wx4g52e1ce0"
# 范围 20 公里以内最多 3 个元素按距离正排,它不会排除自身
127.0.0.1:6379> georadiusbymember company ireader 20 km count 3 asc
1) "ireader"
2) "juejin"
3) "meituan"
# 范围 20 公里以内最多 3 个元素按距离倒排
127.0.0.1:6379> georadiusbymember company ireader 20 km count 3 desc
1) "jd"
2) "meituan"
3) "juejin"
# 三个可选参数 withcoord withdist withhash 用来携带附加参数
# withdist 很有用,它可以用来显示距离
127.0.0.1:6379> georadiusbymember company ireader 20 km withcoord withdist withhash count 3 asc
1) "ireader"
2) "0.0000"
3) (integer) 4069886008361398
4) "116.5142020583152771"
5) "39.90540918662494363"
1) "juejin"
2) "10.5501"
3) (integer) 4069887154388167
4) "116.48104995489120483"
5) "39.99679348858259686"
1) "meituan"
2) "11.5748"
3) (integer) 4069887179083478
4) "116.48903220891952515"
5) "40.00766997707732031"
127.0.0.1:6379> georadius company 116.514202 39.905409 20 km withdist count 3 asc
1) "ireader"
2) "0.0000"
1) "juejin"
2) "10.5501"
1) "meituan"
2) "11.5748"