一、基本命令
官网链接:官网链接
#切换到对应数据库
select index
#查看数据库大小
dbsize
#存储键值对
set key value
#获取值
get key
#清空当前数据库
flushdb
#清空全部数据库
flushALL
#判断指定键是否存在(0/1)
exists key
#删除指定库的键
move key db
#设置key的过期时间
expire key seconds
#查看key的剩余时间
ttl key
#查看key 类型
type key
二、五大基本数据类型
STRING
- 基本操作
#获取所有key[按照指定模式匹配]
keys * [pattern]
#追加字符串:当key不存在时,直接新建
append key "newStr"
#获取长度
strlen key
- 数值操作
#键自增/自减 1
incr/decr key
#键增加/减少 step
incrby/decrby key step
- 截取指定返回
#截取指定key指定位置之间的字符串
getrange key start end
- 替换
#替换指定位置开始的字符为新字符
setrange key startIndex newStr
- 设置键的过期时间
#设置键过期时间,到时间自动失效
setex key seconds value
- 键不存在设置
#键不存在时设置,返回0/1
#键不存在时:等价于set key1 value1
setnx key1 value1
#键存在时,执行失败
setnx key1 value2
- 批量操作
#mset/mget批量操作:同时设置/获取多个键值对
#设置多个键值对
mset k1 v1 k2 v2 k3 v3 ...
#获取多个键的值
mget k1 k2 k3
#多个键不存在设置,原子操作:存在一个失败,全部失败
msetnx k1 v1 k4 v4
说明:k1已经存在,直接返回0
LIST---【以‘l’开头】
List的命令都以‘l’/'r'开头,其本质是一个链表,redis可通过list实现栈、队列和阻塞队列等数据结构。
- 插入、取值和移除
#左入
lpush list element1 element2...
#右入
rpush list element1 element2...
#取元素值
lrange list startIndex endIndex
说明:左入左出相当于栈结构,右入左出相当于队列结构
#左移除
lpop list
#右移除
rpop list
- 获取指定下标元素
语法:lindex list index
- 返回列表长度
语法:llen list
- 删除count个值为value的元素
语法:lrem list count value
#示例:在userList中删除2个value为gk的元素
lrem userList 2 gk
- 截断指定下标区间的元素作为新的list
语法:ltrim list start end
#示例:list=[1,2,3,4,5],截取[1,3]的元素作为新的list
ltrim list 1 3
#结果:list=[2,3,4]
- 移除最后一个元素到新的list中
语法:rpoplpush list newList
#示例:list1=[1,3,5,6] list2=[2]
rpoplpush list1 list2
#结果:list1=[1,3,5] list2=[6,2]
- 更新list中指定下标的值
语法:lset list index newValue
#示例:list=[1,4,3,2]
lset list 0 5
#结果:list=[5,4,3,2]
- 在list指定元素前后插入新元素
语法:linsert list before|after 指定元素 新元素
#示例:list=[0,1,3,4,5]
#在0之前插入-1
linsert list before 0 -1
#在1之后插入2
linsert list after 1 2
#结果:list=[-1,0,1,2,,3,4,5]
SET---【以‘s’开头】
- 添加、查看、移除元素、查看元素个数
语法:
sadd setName [values] #添加元素
smembers setName #查看指定set的所有值
scard setName #获取集合中元素个数
srem setName value #移除元素
- 判断元素是否在set中
语法:sismember setName value
- 随机选出指定个数的元素
语法:srandmember setName [count]
- 随机删除元素
语法:spop setName
- 移动指定元素到新的set
语法:smove fromSet toSet value
- 集合的并、交、差
语法:
并:sunion set1 set2
交:sinter set1 set2 #共同好友实现
差:sdiff set1 set2
HASH---【以‘h’开头】
- 设置单个值(hset hashName key1 value1)
- 获取单个值(hget hashName key1)
- 设置多个值(hmset hashName [key1 value1 key2 value2])
- 获取多个值(hget hashName key1 key2)
- 获取全部数据(hgetall hashName)-----(hkeys|hvals hashName 获取所有字段|值)
- 删除指定字段(hdel hashName key1)
- 获取键值对的个数(hlen hashName)
- 判断key是否存在于hash表中(hexists hashName key)----0/1
ZSET---【以‘Z’开头】
- 添加数据(zadd setName 序号 value)
- 按照字段进行排序(zrange/zrevrange -----正序/逆序)
三、三种特殊类型
Geospatial--地理位置
- 应用场景
- 定位
- 搜索附近的人
- 打车距离计算等
- API基本命令(6个)----底层实现是ZSET有序集合
- 命令详解(6个)
- 添加地理位置:GEOADD key 经度纬度名称 [可添加多个…]
- 【有效的经度从-180度到180度】
- 【有效的纬度从-85.05112878度到85.05112878度】
- 返回地理位置的经纬度
- GEOPOS key 名称[可查看多个…]
- 返回两个给定位置之间的距离
- GEODIST key 名称1 名称2 [单位:m/km/mi英里/ft英尺]
- 返回一个或多个位置元素11个字符的Geohash字符串
- 语法:GEOHASH key 名称 [可以返回多个…]
- 以给定的经纬度为中心, 返回键中不超过给定距离的所有元素(返回指定点到目标点的距离)
- 语法:GEORADIUS key 经度 纬度 半径长度 单位 [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
- 参数说明
- WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
- WITHCOORD: 将位置元素的经度和维度也一并返回。
- WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 主要用于底层应用或者调试, 实际中的作用并不大。
- COUNT N :获取前 N 个匹配元素
- 以存在的成员为中心返回距离(返回两个成员之间的距离)
- 语法:GEORADIUSBYMEMBER key member radius 单位 [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
Hyperloglog--基数统计
- 优势:占用的内存固定(12kB内存)
- API基本命令(3个)
- 命令详解(3)
- 将指定元素/元素列表添加到HyperLogLog
- 语法:PFADD key elements
- 返回PFADD添加的唯一元素的近似数量.(错误率:0.81%)
- 语法:PFCOUNT key [key ...]
- 将多个 HyperLogLog 合并(merge)为一个 HyperLogLog并存储在第一个HyperLogLog中(destkey)
- 语法:PFMERGE destkey sourcekey [sourcekey ...]
Bitmaps--位图(0|1)
- 应用场景:统计用户信息(活跃/不活跃;登录/未登录;打卡/未打卡)--只有两个状态的情况
- 命令(3个)
- Setbit key innerkey innervalue 设置元素
- Getbit key innnerkey 获取元素
- Bitcount key 统计为真的元素个数