Redis基本命令

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的值

22191332_NM1t.png

注: 删除count的绝对值个value后结束

Count>0 从表头删除

Count<0 从表尾删除

 

裁剪key并赋值回该key

ltrim key start stop

 

显示链表的某个索引的值

lindex key index

22191333_TjgE.png

 

计算链接表的元素个数

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已经改变了,事务就取消了.

 

来自为知笔记(Wiz)

转载于:https://my.oschina.net/u/3772091/blog/1611362

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值