一、基本命令

官网链接:官网链接

#切换到对应数据库
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)

redis type 显示none redis type命令_字符串

  • 设置多个值(hmset hashName [key1 value1 key2 value2])
  • 获取多个值(hget hashName key1 key2)

redis type 显示none redis type命令_键值对_02

  • 获取全部数据(hgetall hashName-----(hkeys|hvals hashName  获取所有字段|)

redis type 显示none redis type命令_redis type 显示none_03

  • 删除指定字段(hdel hashName key1)     

redis type 显示none redis type命令_数据库_04

  • 获取键值对的个数(hlen hashName

redis type 显示none redis type命令_redis_05

  • 判断key是否存在于hash表中(hexists hashName key----0/1

redis type 显示none redis type命令_字符串_06

ZSET---【以‘Z’开头】

  • 添加数据(zadd setName 序号 value)

redis type 显示none redis type命令_redis type 显示none_07

  • 按照字段进行排序(zrange/zrevrange -----正序/逆序)

redis type 显示none redis type命令_键值对_08

三、三种特殊类型 

Geospatial--地理位置

  • 应用场景
  • 定位
  • 搜索附近的人
  • 打车距离计算等
  • API基本命令(6个)----底层实现是ZSET有序集合

redis type 显示none redis type命令_redis type 显示none_09

  • 命令详解(6个)
  • 添加地理位置:GEOADD key  经度纬度名称 [可添加多个…]
  • 【有效的经度从-180度到180度】
  • 【有效的纬度从-85.05112878度到85.05112878度】

redis type 显示none redis type命令_redis type 显示none_10

  • 返回地理位置的经纬度
  • GEOPOS key 名称[可查看多个…]

redis type 显示none redis type命令_字符串_11

 

  • 返回两个给定位置之间的距离
  • GEODIST key 名称1 名称2 [单位:m/km/mi英里/ft英尺]

redis type 显示none redis type命令_redis type 显示none_12

  • 返回一个或多个位置元素11个字符的Geohash字符串
  • 语法:GEOHASH key 名称 [可以返回多个…]

redis type 显示none redis type命令_数据库_13

  • 以给定的经纬度为中心, 返回键中不超过给定距离的所有元素(返回指定点到目标点的距离
  • 语法:GEORADIUS key 经度 纬度 半径长度 单位 [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
  • 参数说明
  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 主要用于底层应用或者调试, 实际中的作用并不大。
  • COUNT N :获取前 N 个匹配元素

redis type 显示none redis type命令_redis_14

  • 以存在的成员为中心返回距离(返回两个成员之间的距离
  • 语法:GEORADIUSBYMEMBER key member radius 单位 [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

redis type 显示none redis type命令_数据库_15

Hyperloglog--基数统计

  • 优势:占用的内存固定(12kB内存)
  • API基本命令(3)

redis type 显示none redis type命令_字符串_16

  • 命令详解(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                                统计为真的元素个数

redis type 显示none redis type命令_字符串_17