应用场景

String :缓存,限流,计数器,分布式锁,分布式session
Hash:存储y用户信息,用户主页访问量,组合查询
List:关注人时间轴列表
Set:点赞,标签,好友关系
Zset:排行榜

常用命令

  • 启动redis服务
    在redis的src目录下执行命令:
    ./redis-server

  • 启动redis客户端实例
    在redis的src目录下执行命令:
    ./redis-cli

  • 连接远程redis服务器:
    redis-cli -h host -p port -a password

  • 设置key-value
    set key value

  • 获取值
    get key

  • 删除
    del key

  • 判断key是否存在
    exists key

  • 设置10秒过期
    expire key 10

  • 设置10毫秒过期
    pexpire key 10

  • 删除过期时间
    persist key

  • 切换数据库
    redis有16个数据库,默认使用0号数据库,切换数据库的命令为:
    select index(index表示数据库编号)

  • 清空当前选中的数据库
    flushdb

  • 清空所有数据库
    flushall

  • 查看当前数据库的所有key
    keys *

  • 查看字段类型
    type key

string

set name ljh
get name
getrange name 0 -1         截取字符串,0对应start,1对应end
getset name new_ljh       设置值,返回旧值
mset key1 value1 key2 value2            批量设置
mget key1 key2            批量获取
setnx key value           不存在就插入(not exists)
setex key time value      过期时间(expire)
setrange key index value  从index开始替换value
incr age        执行+1
incrby age 10   执行+10
decr age        执行-1
decrby age 10   执行-10
incrbyfloat     增减浮点数
append          追加
strlen          长度
getbit/setbit/bitcount/bitop    位操作

hash

hset myhash name ljh      添加一个键值对
hget myhash name          取出值
hmset myhash name ljh age 20 note "i am notes"      批量键值对
hmget myhash name age note   
hgetall myhash               获取所有的键值对
hexists myhash name          是否存在
hsetnx myhash score 100      不存在的话创建,存在的话修改
hincrby myhash id 2          增加2
hdel myhash name             删除
hkeys myhash                 只取key
hvals myhash                 只取value
hlen myhash                  长度

list

lpush mylist a b c  左插入
rpush mylist x y z  右插入
lrange mylist 0 -1  数据集合
lpop mylist  弹出元素
rpop mylist  弹出元素
llen mylist  长度
lrem mylist count value  根据值来删除(count表示要删除多少个值为value的元素)
lindex mylist 2          指定索引的值
lset mylist 2 n          索引设值
ltrim mylist 1 2         截取指定的元素集合
linsert mylist before 1 value   在值为1前面插入value值
linsert mylist after 1 value    在值为1的后面插入value值
rpoplpush list list2     将list的最后一个元素移到list2中

set

sadd myset e            添加一个元素
smembers myset       数据集合
srem myset e        删除
sismember myset e 判断元素是否在集合中
scard key_name       获取set集合中元素个数
sdiff | sinter | sunion 操作:集合间运算:差集 | 交集 | 并集
srandmember          随机获取集合中的元素
spop                 从集合中弹出一个元素

zset

zadd zset 1 one          添加一个元素(1表示score,用作排序使用)
zadd zset 2 two            
zadd zset 3 three
zincrby zset 1 one              分数+1
zscore zset two                  获取分数
 zrange zset 0 -1                   获取全部的值
zrange zset 0 -1 withscores     获取全部值并附带分数
zrangebyscore zset 10 25 withscores 分数在某个范围的值
zrangebyscore zset 10 25 withscores limit 1 2 分页
Zrevrangebyscore zset 10 25 withscores  指定范围的值从大到小排序
zcard zset  元素数量
Zcount zset 获得指定分数范围内的元素个数
Zrem zset one two        删除一个或多个元素
Zremrangebyrank zset 0 1  按照排名范围删除元素
Zremrangebyscore zset 0 1 按照分数范围删除元素

GEO地理位置

geoadd:添加地理位置的坐标。
例:GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
geopos:获取地理位置的坐标。
例:geopos Sicily Palermo
geodist:计算两个位置之间的距离。
例:GEODIST Sicily Palermo Catania
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
例: GEORADIUS Sicily 15 37 100 km
georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
例:georadiusbymember Sicily Catania 100 km
geohash:返回一个或多个位置对象的 geohash 值。

hyperLogLog基数统计

pfadd mykey a b c d 向一个集合添加元素
pfmerge mykey3 mykey mykey2 向合并mykey和mykey2中的元素到集合mykey3中,并且没有重复元素
pfcount mykey3 查看mykey的基数(即重复元素只算一次)。

bitmap二状态需求

应用场景:一般用于二状态的情况,例如判断用户是否登录,是否打卡等二状态需求。
setbit mybitmap 0 0 设置第0位的值为0
getbit mybitmap 0 获得第0位的值
bitcount mybitmap 统计值为1的数量

订阅与发布:

订阅频道:subscribe chat1
发布消息:publish chat1 "hell0 ni hao"
查看频道:pubsub channels
查看某个频道的订阅者数量: pubsub numsub chat1
退订指定频道: unsubscrible chat1   , punsubscribe java.*
订阅一组频道: psubscribe java.*
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐