Redis基本命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis基本命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5125字,纯文字阅读大概需要8分钟。
内容图文
![Redis基本命令](/upload/InfoBanner/zyjiaocheng/891/604a7d36b8034c6a94a6aac2ace8e9fa.jpg)
Redis对于key的操作命令
删除key
del key1 key2 ... Keyn
作用: 删除1个或多个键
返回值: 不存在的key忽略掉,返回真正删除的key的数量
改名
rename key newkey
作用: 给key赋一个新的key名
注:如果newkey已存在,则newkey的原值被覆盖
安全改名
renamenx key newkey
作用: 把key改名为newkey
返回: 发生修改返回1,未发生修改返回0
注: nx--> not exists, 即, newkey不存在时,作改名动作
移到另一个数据库
redis 127.0.0.1:6379[1]> select 2
(注意: 一个redis进程,打开了不止一个数据库, 默认打开16个数据库,从0到15编号,
如果想打开更多数据库,可以从配置文件修改)
查询key
keys pattern 查询相应的key
在redis里,允许模糊查询key
有3个通配符 *, ? ,[]
*: 通配任意多个字符
?: 通配单个字符
[]: 通配括号内的某1个字符
返回随机key
randomkey
判断key是否 存在,返回1/0
exists key
返回key存储的值的类型
type key
有string,link,set,order set, hash
查询key的生命周期
ttl key
超时时间
expire key 整型值
同理:
pexpire key 毫秒数, 设置生命周期
pttl key, 以毫秒返回生命周期
把指定key置为永久有效
persist key
Redis字符串类型的操作
创建键值对
set key value [ex 秒数] / [px 毫秒数] [nx] /[xx]
如: set a 1 ex 10 , 10秒有效
Set a 1 px 9000 , 9秒有效
注: 如果ex,px同时写,以后面的有效期为准
如 set a 1 ex 100 px 9000, 实际有效期是9000毫秒
nx: 表示key不存在时,执行操作
xx: 表示key存在时,执行操作
一次性设置多个键值
mset multi set
例: mset key1 v1 key2 v2 ....
获取key的值
get key
获取多个key的值
mget key1 key2 ..keyn
把value追加到key的原值上
append key value
截取字符串
getrange key start stop
注意: 对于字符串的下标,左数从0开始,右数从-1开始
获取并返回旧值,设置新值
getset key newvalue
key对应的值加一
incr key
增加key对应的值
incrby key number
增加key对应的值(浮点)
incrbyfloat key floatnumber
key对应的值减一
decr key
减少key对应的值
decrby key number
link 链表结构
把值插入到链接头部
lpush key value
同理: 插入到尾部
rpush key value
删除头部的值
lpop key
同理: 删除尾部
rpop key
返回链表中[start ,stop]中的元素
lrange key start stop
返回所有:
lrange key 0 -1
删除链表的值
lrem key count value
如:删除t中2个等于2的值
注: 删除count的绝对值个value后结束
Count>0 从表头删除
Count<0 从表尾删除
裁剪key并赋值回该key
ltrim key start stop
显示链表的某个索引的值
lindex key index
计算链接表的元素个数
llen key
链表插入值
linsert key after|before SEARCH VALUE
作用: 在key链表中寻找’search’,并在search值之前|之后,.插入value
注: 一旦找到一个search后,命令就结束了,因此不会插入多个value
集合 set 相关命令
集合的性质: 唯一性,无序性,确定性
注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素
但,因为集合的无序性,无法通过下标或范围来访问部分元素.
因此想看元素,要么随机先一个,要么全选
添加元素
sadd key value1 value2
删除元素
srem key value1 value2
随机删除一个元素
spop key
返回随机的1个元素
srandmember key
判断值是否在集合中
sismember key value
是返回1,否返回0
返回所有元素
smembers key
返回集合元素个数
scard key
把source中的value删除,并添加到dest集合中
smove source dest value
求交集
sinter key1 key2 key3
求交集并赋值给新集合
sinterstore dest key1 key2 key3
suion并集
sdiff差集
order set 有序集合
添加元素
zadd key score1 value1 score2 value2 ..
删除元素
zrem key value1 value2 ..
按照socre来删除元素
zremrangebyscore key min max
按排名删除元素
zremrangebyrank key start end
查看排名
升序:zrank key member
降序:zrevrank key memeber
把集合 排序后,返回名次[start,stop]的元素
ZRANGE key start stop [WITHSCORES]
返回元素个数
zcard key
返回[min,max] 区间内元素的数量
zcount key min max
Hash 哈希数据类型相关命令
把key中 filed域的值设为value
hset key field value
hmset key field1 value1 [field2 value2 field3 value3 ......fieldn valuen]
作用: 设置field1->N 个域, 对应的值是value1->N
hget key field
作用: 返回key中field域的值
hmget key field1 field2 fieldN
作用: 返回key中field1 field2 fieldN域的值
hgetall key
作用:返回key中, 所有域与其值
hdel key field
作用: 删除key中 field域
hlen key
作用: 返回key中元素的数量
hexists key field
作用: 判断key中有没有field域
hinrby key field value
作用: 是把key中的field域的值增长整型值value
hinrby float key field value
作用: 是把key中的field域的值增长浮点值value
hkeys key
作用: 返回key中所有的field
kvals key
作用: 返回key中所有的value
Redis 中的事务
Mysql |
Redis |
|
开启 |
start transaction |
muitl |
语句 |
普通 sql |
普通命令 |
失败 |
rollback 回滚 |
discard 取消 |
成功 |
commit |
exec |
思考:
我正在买票
Ticket -1 , money -100
而票只有1张, 如果在我multi之后,和exec之前, 票被别人买了---即ticket变成0了.
我该如何观察这种情景,并不再提交
悲观的想法:
世界充满危险,肯定有人和我抢, 给 ticket上锁, 只有我能操作. [悲观锁]
乐观的想法:
没有那么人和我抢,因此,我只需要注意,
--有没有人更改ticket的值就可以了 [乐观锁]
watch key1 key2 ... keyN
作用:监听key1 key2..keyN有没有变化,如果有变, 则事务取消
unwatch
作用: 取消所有watch监听
具体的命令---- watch命令
例:
redis 127.0.0.1:6379> watch ticket
OK
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> decr ticket
QUEUED
redis 127.0.0.1:6379> decrby money 100
QUEUED
redis 127.0.0.1:6379> exec
(nil) // 返回nil,说明监视的ticket已经改变了,事务就取消了.
转载于:https://my.oschina.net/u/3772091/blog/1611362
内容总结
以上是互联网集市为您收集整理的Redis基本命令全部内容,希望文章能够帮你解决Redis基本命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。