+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 源码论坛 > redis 常用命令 >

redis 常用命令

时间:2024-12-07 15:15:02
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 命令
 

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title