1.redis启动方式 直接命令启动 redis-server 动态命令redis-server --启动参数 配置文件redis-server 配置文件
2.验证redis 状态 ps -ef | grep redis netstat -antpl | grep redis redis -cli -h ip -p port ping
3.通用命令
keys : 列出所有的key keys xx* keys xx[a-g]* keys xx? 生产环境一般不使用
dbsize :数据库大小
exists key名 : key是否存在
del key名 [key1,key2..]: 删除key
expire key seconds: 设置过期时间
ttl key : 查看key剩余过期时间 -1 无过期时间 -2 key 不存在
persist key : 去除key 的过期时间
type key : 类型
string 操作
增删改查: set存不存在都插入 (setnx key value只有key不存在才插入key set key value xx key存在才更新) get del
增加/减少: incr key decr key incrby key 大小 decrby key 大小
mset k1 v1 k2 v2 mget k1 k2(get操作是原子操作) 批量操作 集群操作注意 slot的统一
getset 得到旧值 设置新值 append key value 追加值 strlen 获取值的长度(注意中文长度,一个中文两个字节)
incrbyfloat key floatvalue 给指定key 加 floatvalue
getrange key start end 获取指定范围的值 从0 开始 闭区间
setrange key index value 设置指定位置key 的值
hash 操作 空了之后key自动删除
hash结构 key field value field 唯一 value 可以重复
hset/hget key field value del key field hsetnx 只有key field不存在才插入
hexists key field 判断field是否存在 hlen key 获取 field 数量
hmset key field1 value1 field2 value2
hmget key field1 field2 批量获取 filed值
hincrby key field value 增加对应field的值
hgetall key 获取所有field 值
hvals key 返回 key中所有field 的值
hkeys key 返回key 中所有 field
hincrbyfloat key field floatvalue 给指定key 的 field 加 floatvalue
list 操作 有序 不唯一
rpush/lpush key value1 value2 装入值
linsert key before/after oldvalue newvalue 指定值后面插入值
lpop/rpop key 弹出值
lrem key count value count >0 从左到右删除 count个value count=0 删除所有 等于value的值 count < 0 从右到左删除 count个value值
ltrim key start end 保留 start ——》end 之间的值 闭区间
lrange key start end 查询指定范围的值 闭区间
lindex key index 读取指定位置的值
llen key 获取list长度
lset key index newvalue 设置指定位置的值
blpop/brpop key timeout 阻塞弹出 timeout = 0 永不阻塞
使用:
lpush + lpop 实现 栈stack 功能 lpush + rpop 实现 队列queue 功能 lpush + ltrim 定长集合collection 功能 lpush + brpop 实现消息队列功能
set 操作 无序 唯一 空了之后key自动删除
sadd key 增加 srem key 删除
scard key set的长度
sismember key value 判断value是否存在与key内
srandmember key count 随机取出 count个值
smembers key 列出所有值
spop key 随机弹出一个值
sinter 取交集 sdiff 差集 a有b没有的 sunion 取并集 sinter/sdiff/sunion store key 将结果 保存在key中
使用:
srandmember/spop 做抽奖
sadd 做标签
sadd + sinter 共同关注
zset 操作 有序 唯一
zadd key score value 添加值 【可以是多个】 score 可以重复 zrem key value 删除 【可以是多个】
zscore key value 获取对应的级别分数
zrank key value 获取对应的排名
incrby key increscore value 给对应value 增加 指定分数
zcard key 集合元素数量
zrange key start end 获取指定范围内的值 加 withscores 顺便获取分数
zrangebyscore key minscore maxscore [withscores] 获取指定分数范围内的值
zcount key minscore maxscore 获取指定分数范围内值的个数
zremrangebyrank key start end 删除指定排名范围内的值
zremrangebyscore key start end 删除指定分数范围内的值
zrevrank key反转排名
zrevrange key start end 指定排名范围倒排
zrevrangebyscore start end 指定分数范围倒排 zinterstore zunionstore
集群操作注意 slot的统一,操作不当会报 "CROSSSLOT Keys in request don't hash to the same slot" 错