[toc]
起因
从标题来看,似乎这篇博文没有看下去的必要了,谁用redis还敲命令行,不都是GUI嘛。
确实,GUI现在特别的好用,直观、高效还美观。
但是,在生产环境下GUI可能并没有那么香。。。。。。
事情是这样的,线上环境进行了大版本升级,然后一堆问题,我和一个运维同事一起排查问题,目的是快速并准确的查看redis中某key的生命周期以及各周期下的value。生产环境是国产化操作系统,而且还是内网,我们连过去还跳了两个跳板机。所以就只能用命令行,结果就是非经巴拉。。。。。。
也许最一开始学习Redis的时候命令行还真记得几个,但是长时间依赖GUI工具之后,大脑中再深刻的记忆也会随着时间消散。更何况这个职业本身就是快节奏、多加班、少睡眠。。。。。。
所以,想总结一下Redis下常用的命令,一来温故知新,二来省去下次bd的时间。
配置
bind
bind 配置可以配置多个,一般情况下建议将127和192都配置上。
bind 127.0.0.1 192.168.3.191
- 127:redis-cli 工具打开的时候默认会通过127连接,配置这个方便本地使用,当然了,如果不配置的话,就需要
PS C:\Program Files\Redis> .\redis-cli.exe -h 192.168.3.191 -p 6379
这样连接了 - 192:方便别的机器通过GUI工具或者代码进行连接,需要注意的是ip是不是静态ip
端口
默认端口 6379
连接
开启连接
如下命令:
redis-cli -h ip -p port -a "password"
解决中文乱码:
redis-cli --raw -h ip -p port -a "password"
关闭连接
exit 或者 quit
命令
仅总结开发中常用的命令
key相关
- del key
- dump key:序列化key,返回序列化后的值
- exists key:检查是否存在某key
- expire key :为指定key设置过期事件,单位为秒
- keys pattern:查询key,返回key名称。常用的查询:keys 查询所有,keys a 查询以a开头的key
- persist key:移除key的过期时间,它将不会过期
- ttl key :返回给定key剩余生存时间,单位为秒
- randomkey:随机返回一个key
- rename key newKeyName:修改key的名称为 newKeyName
- renamenx key newKeyName:修改key名称,会校验新名称是否已存在
- type key :返回key的数据类型
字符串相关
- set key value :设置key 和value ,若key已经存在,将更新原来值为value
- setnx key value:仅当key不存在时候才新增成功,防止将原有key的值覆盖了
- get key
- mget key1 key2:根据keys 批量获取值
- getrange key startIndex endIndex:根据下标返回字符串值中的子字符
- getset key value :将给定国key的值设置为value,并返回key的旧值
- strlen key: 返回key所存储的字符串的长度,其实数字也可以返回长度
- incr key:将key中存储的数字值增一,并返回增加后的值
- incrby key 5:将key中存储的数字值增加5
- decr key:将key中存储的数字值减一
- decrby key 5:将key中存储的数字减5
- append key value:如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾
hash相关
在 Redis 中, hash实际存储的方式是 key--->values(field:value),key是一个hash的名字,值由一系列的k-v集合组成。
- hset key field value :为key增加一组数据
- hsetnx key field value:只有在field不存在的时候,才为key增加一组数据
- hmset key field1 value1 field2 value2:批量增加数据
- hdel key field1 field2:删除key表中的字段,即删除k-v键值对
- hexists key field:查看key中是否存在field字段
- hget key field:获取key表中field键对应的值
- hmget key field1 field2:获取key表中部分键对应的值
- hgetall key :获取key表中所有的k-v对
- hkeys key:获取key表中的所有键
- hlen key:获取key表中的k-v对数量
List相关
- rpush key value1 value2 :在列表尾添加一个或者多个元素
- rpushx key value:向列表尾添加值,若key存在的话
- lset key index value :设置指定索引处的元素值
- rpop key :移除key列表中的最后一个元素
- lpop key :移除key列表中的第一个元素
- llen key : 获取列表长度
- lrange key start end :获取指定索引范围内的元素
- lindex key index:通过索引获取列表中的元素
Set相关
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
- sadd key m1 m2:向集合添加一个或多个成员
- scard key:获取集合元素数量
- sismember key m1:判断key集合中是否存在 m1 这个成员
- smembers key : 返回key集合中得所有成员
- srem key m1 m2:移除key集合中得一个或多个元素
SortedSet相关
Redis 有序集合 和 集合 一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数,redis 通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
- zadd key s1 m1 s2 m2:向key 有序集合中添加一个或多个成员,s指分数,m是有序集合元素
- zcard key :获取key有序集合得成员数量
- zrange key startIndex endIndex :获取key有序集合中指定索引区间内得成员
- zrangebyscore key min max : 获取key有序集合中指定分数区间内得成员
- zrank key m1:获取key有序集合中m1成员得索引
- zrem key m1 m2:移除key有序集合中得一个或多个元素
- zremrangebyscore key min max :移除key有序集合中指定分数区间得所有成员
- zscore key m1:获取key有序集合中 m1 成员得分数
GEO相关
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。Redis GEO 操作方法有:
- geoadd key lon lat member :添加一个或多个地理位置的坐标,key为键,lon为经度,lat为纬度,member 是指此经纬度得名称,例如我们可以添加一个名为beijing得键,然后向这个key中添加一个值,值包含经纬度坐标和一个名称。
- geopos key member :获取key键member名称得地理位置的坐标。
- geodist key m1 m2:计算key键中 m1 ,m2两个位置之间的距离。
- georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
- georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
- geohash:返回一个或多个位置对象的 geohash 值。
服务器命令
Redis 服务器命令主要是用于管理 redis 服务。
- client list:列出连接到本redis服务得客户端列表
- dbsize:获取当前数据库中key得数量
- info:查询服务器详细信息
- monitor:实时打印出 Redis 服务器接收到的命令,调试用