redis 常用命令

1.通用命令

  • keys: 计算所有的键 O(n)
  • $redis->auth("admin"); //授权
  • dbsize: 数据库大小
  • $redis->info();//获取redis服务信息
  • exists keys: key判断键是否存在,可以指定多个键,命令返回的是存在的键的个数,返回0表示指定的键都不存在
  • del:删除key可以指定删除多个键,命令返回的是成功删除的键的个数。
  • expire key seconds: 设置过期时间 命令设置键在指定秒数后过期
  • expireat 命令设置键在秒级时间的时间戳后过期 Redis在2.6版本之后,提供了毫秒级的过期设置,分别是pexpire命令和pexpireat命令,不管是秒级还是毫秒级,不管是时间还是时间戳,Redis内部使用的都是pexpireat。
  • type key: 获取key的数据类型
  • move age 1//把age 移动到1库
  • ttl key: 查看key的剩余过期时间单位是秒返回值为-1时,表示没有设置过期时间,返回值为正数时,表示剩余的时间,单位是秒,返回为-2时,表示键已过期被删除。
  • pttl 单位是毫秒 同上
  • persist key: 去掉key的过期时间
  • shutdown # 停服务器
  • mv dump.rdb.bak dump.rdb 备份的dump.rdb.bak重新命名成为dump.rdb
  • flushall 清除所有数据库中的数据
  • flushdb清空当前数据库的中的数据
  • jedis.close() //关闭连接 ;
  • INCR key //将key中储存的数字值加1 注意 incr 一个不是 int 的 value 会返回错误,incr 一个不存在的 key,则设置 key 为 1
  • DECR key //将key中储存的数字值减1
  • INCRBY key increment //将key所储存的值加上increment
  • DECRBY key decrement //将key所储存的值减去decrement
  • ps -ef | grep redis 查看是否启动
  • redis-cli 进入客户端
  • redis-cli shutdown 关闭客户端
  • service redis start 启动
  • service redis stop 停止
  • service redis restart 重启
  • $redis->randomkey();//随机返回一个key
  • rename给已存在键重命名。如果给不存在的键重命名,会返回错误。使用rename时需要注意,如果命名的新键已经存在,则其原值将被覆盖,比如示例中rename key2 key3时,key3的原值java被覆盖,为防止这种情况发生,可以使用renamenx命令,只有新键不存在的时候,重命名才会成功。如果重命名的名称和原名称相同,在3.2版本之后会返回OK,而之前的版本会返回错误,需要注意一下。
  • 禁用命令:KEYS、FLUSHDB、FLUSHALL等在config配置文件中通过rename-command禁用

启动方式分为

  • 最简启动 redis-server
  • 动态参数 redis-server --port 6380
  • 配置文件 redis-server configPath

验证是否启动

  • ps -ef | grep redis
  • netstat -antpl | grep redis
  • redis-cli -h ip -p port ping

使用 SCAN cursor [MATCH pattern] [COUNT count]

注:

  • cursor:游标
  • MATCH pattern:查询 Key 的条件
  • Count:返回的条数

SCAN 是一个基于游标的迭代器,需要基于上一次的游标延续之前的迭代过程。

SCAN 以 0 作为游标,开始一次新的迭代,直到命令返回游标 0 完成一次遍历。

此命令并不保证每次执行都返回某个给定数量的元素,甚至会返回 0 个元素,但只要游标不是 0,程序都不会认为 SCAN 命令结束,但是返回的元素数量大概率符合 Count 参数。另外,SCAN 支持模糊查询。

例:

SCAN 0 MATCH test* COUNT 10 //每次返回10条以test为前缀的key 

2.列表类型

  • Rpush key value:将元素添加到列表右边
  • lpush key value:将元素添加到列表左边
  • linsert key before|after value newValue O(n)
  • lpop key:删除列表最左边的元素,且返回元素
  • rpop key:删除列表最右边的元素,且返回元素
  • lrem key count value (删除count个value元素) 0(n)
  • ltrim key start end $redis->ltrim("list",0,1);
  • (按照索引范围修剪列表) o(n) //保留指定key的值的范围内的数据 0为头 -1为尾
  • lrange key start end (包含end) (获取列表制定索引范围)$redis->lrange("list",0,-1);
  • lindex key index o(n) //返回list中index位置的元素
  • llen key //返回list的长度
  • lset key index newValue //设置list中指定下标的元素值 lset(list,位置,值),位置可以从头或者从尾
  • //$redis->rpoplpush("list","listt");//从第一个LIST的尾部移除元素并添加到第二个LIST的头部
  • blpop key timeout (lpop的阻塞版本)
  • brpop key timeout (rpop的阻塞版本)
  • lpush + lpop = stack
  • lpush + rpop = queue
  • lpush + ltrim = Capped Collection
  • lpush + brpop = Message Queue

3.字符串类型

  • 场景:缓存、计数器、分布式锁
  • get key
  • set key value //赋值
  • incr key //自增,默认值1 注意 incr 一个不是 int 的 value 会返回错误,incr 一个不存在的 key,则设置 key 为 1
  • decr key //自减,默认值1
  • incrby key k //必须给定参数值 同 incr 类似,加指定值 ,key 不存在时候会设置 key,并认为原来的 value 是 0
  • decrby key k //必须给定参数值
  • setnx key value 值不存在才设置 //设置key对应的值为string类型的value,如果key已经存在,返回0,nx是not exist的意思
  • $redis->msetnx(array('key0' => 'value0', 'key1' => 'value1'));//全部成功返回1,否则失败一个也返回0
  • set key value xx 存在才设置
  • mget 批量获取 O(n) //批量获取值 如果对应 key 不存在,则对应返回 nil。
  • mset 批量设置 O(n) //批量赋值 成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。
  • getset key newvalue 设置新值返回旧值 //getset设置key的值,并返回key的旧值
  • append key value 将新值追加到旧值 //给指定的key的字符串追加value,返回新字符串的长度
  • strlen 获取值的长度 取指定 key 的 value 值的长度。
  • incrbyfloat key 3.5 增加对应key 3.5
  • getrange key start end //getrange获取子字符串
  • setrange key start value //设置子字符串替换,key,开始位置,替换值
  • $redis->setex('key',10,'value10'); //带生存时间的写入值单位s

4.集合类型

Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加,删除和查找的复杂程度都是0(1) 对集合我们可以取并集,交集,差集。通过这些操作我们可以实现SNS中的好友推荐和blog的tag功能

  • 无序 无重复 支持集合间操作 set:String 类型的无序集合,且元素不能重复
  • sadd key element (添加)
  • srem key element (删除)删除set集合中某元素
  • scard key //获取集合key的元素个数
  • //$redis->sdiffstore("dif","set1","set2");//返回多个集合的差集,存在第三个集合里面
  • //$res = $redis->sinterstore("inter","set","set1");///取多个集合的交集,存在第三个集合里面
  • sismember key element //判断member元素是否存在于集合key中
  • srandmember key count (随机选出count个元素) 随机返回集合内的一个元素,不会删除元素
  • //$redis->sunionstore("union","set","set1");///取多个集合的并集,存在第三个集合里面
  • //$redis->smove("set1","set2","value");///第一个集合元素剪切到第二个集合里面。
  • spop key (随机弹出一个元素)
  • smembers key (取出所有元素 小心使用)
  • sscan (遍历集合)
  • sdiff 差集
  • sinter 交集
  • sunion 并集
  • sadd = 打标签
  • spop/srandmember = 随机
  • sadd + sinter = Social Graph

5.有序集合类型

sortedset 和 set 一样也是 string 类型元素的集合,且不允许重复的元素,不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序,有序集合的成员是唯一,但分数(score)却可以重复

  • zadd key score element O(logN) //往有序集合key中加入带分值元素
  • zrem key element (删除)
  • zscore key element //返回有序集合key中元素member的分值
  • zincrby key increScore element (增加分数)
  • zcard key (返回个数)
  • zrange key start end withscores (获取元素) //正序获取有序集合key从start下标到stop下标的元素
  • zrangebyscore key minScore maxScore
  • zcount key minScore maxScore (O(logN + m))
  • zremrangebyrank key start end (删除指定排名内的升序元素)
  • zremrangebyscore key start end (删除指定分数内的升序元素)
  • zrevrank
  • zrevrange //倒序获取有序集合key从start下标到stop下标的元素
  • zrevrangebyscore
  • zinterstore
  • zunionstore

6.哈希类型

  • hget key filed //单个获取
  • hset key field value //单个设置
  • hdel key field $redis->hdel("test","key");//删除指定hash的field
  • hgetall key O(n) 获取所有的field和value
  • hexists key field $redis->hexists("test","usernames");//测试hash field 存在1,不存在0
  • hlen key 获取字段数量 $redis->hlen("test"); //返回hash 里所有的 field 的数量
  • hmget key field1 field2 O(n) $redis->hmget("testabc",array("a","b","c"));//批量获取
  • hmset key field1 value1 field2 value2 O(n) $redis->hmset("testabc",array("a"=>1,"b"=>2,"c"=>3,'d'=>4));//批量设置
  • hincrby key field value $redis->hincrBy("test","password","123456");//设置hash field 添加key和value
  • hvals key 返回hash key对应所有field的value O(n)
  • hkeys key 返回hash key对应的所有field O(n)
  • hsetnx key field value $redis->hsetnx("test","username","admin@qq.com");
  • //设置hash field 为指定的值value,如果feild已经存在,返回0,nx是not exist的意思
  • hincrby key field intCounter
  • hincrbyfloat key field floatCounter

scan的优缺点

优点

  • 提供键空间的遍历操作,支持游标,复杂度O(1), 整体遍历一遍只需要O(N)
  • 提供结果模式匹配
  • 支持一次返回的数据条数设置,但仅仅是个hints,有时候返回更多
  • 弱状态,所有状态只需要客户端需要维护一个游标

缺点

  • 无法提供完整的快照遍历,也就是中间如果有数据修改,可能有些涉及改动的数据遍历不到
  • 每次返回的数据条数不一定,极度依赖内部实现
  • 返回的数据可能有重复,应用层需要能够处理重入逻辑

HyperLogLog命令


示例:

redis 127.0.0.1:6379> PFADD w3ckey "redis"
 
1) (integer) 1
 
redis 127.0.0.1:6379> PFADD w3ckey "mongodb"
 
1) (integer) 1
 
redis 127.0.0.1:6379> PFADD w3ckey "mysql"
 
1) (integer) 1
 
redis 127.0.0.1:6379> PFCOUNT w3ckey
 
(integer) 3

连接相关命令

服务器相关命令

发布订阅命令

脚本相关命令

Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

地理位置(geo) 命令

事务命令

multi  开始事务

  SET KEY1 VALUE

  SET KEY2 VALUE

exec 事务结束

redis事务不支持回滚

WATCH 命令

例:配合事务一起用

 SET key 1

  WATCH key

  SET  key 2

MULTI 开始事务

 SET 可以3

EXEC

GET key 

结果是 2 ,因为执行了WATCH 命令

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值