您的位置:首页 > 数据库 > Redis

Redis(一) Redis常用命令

2017-02-04 00:00 573 查看

Redis常用命令

一 、String类型(set 和 get)

set name tom

setnx name hello 设置name,key不存在才会设置,存在则返回nil。

setex name 10 设置name的存活时间

setrange name 2 abc 从name字符串的第二个字符开始,替换成后面的abc

mset name1 hello name2 nihao name3 hala 批量设置key-value。

Msetnx name1 n1 name4 n4 批量设置key-value,当有一个key之前已经存在,返回nil,并回滚,只有都设置成功,才返回1.

Get name 获得name对应的value。

Getset name laloha 返回name原来的,并将name设置成新的值。如果name不存在则返回nil,并设置为aloha。

Getrange name 0 3 获取name的子字符串,从0开始到3(包括3)。

Mget name1 name2 name3 批量获得key,key存在返回对应的值,不存在则返回nil。

Set age 10 设置age是10

Incr age 增加1,age变成11,【age的值必须是int类型,其他会返回错误】

Incrby age 10 同样是增加,并且指定增量,age变成21。

Decr age 减少1,age变成20

Decrby age 10 减少指定量 age变成10

Decrby 和 incrby +一个负值 作用相同。

Append name newString 给name后面追加新的字符串,并返回组合后的字符串的长度。

Strlen name 返回name对应的value的长度

Strlen age 返回age的位数,例如age=103,返回3.

二、list类型 :a list is a series of ordered values,有序可重复

2.1、创建list,并放入值

rpush names t2 创建一个list,叫names,并在这个names后面追加t2

rpush names t3 后面再追加t2

lpush names t1 在前面追加t1

目前names中有t1、t2、t3。

2.2 lrange(从list取值, 第一个数字表示从第几个开始,第二个数字代表到第几个结束,如果第二个数字是-1,表示从第一个数字开始一直到最后一个值)

lrange names 0 -1 返回t1 t2 t3。返回从第0个开始,到最后一个

lrange names 1 -1 返回t2 t3。返回从第1个开始,到最后一个

lrange names 4 -1 返回empty list or set从第1个开始,到最后一个,但是这个list没有5个元素.

lrange names 1 2 返回t2 t3。返回第1开始,到第2个

lrange names 1 4 返回t2 t3。返回第1开始,到第4个,但是没有4,所以有多少返回多少。

2.3

llen names 返回3。 返回names的长度

lpop names 返回t1。删除第一个元素,并返回这个元素

rpop names 返回t3。删除最后一个元素,并返回这个。

2.4

linsert names before t3 t4 表示在t3的前面插入t4

linsert names after t1 t5 表示在t1的后面插入t5

2.5

lset names 1 tt5 将下表为1的元素改为tt5 (下表从0开始)

lset names -2 tt4 表示把倒数第2个元素改为tt4 (-1代表最后一个元素)

2.6 lrem key count value

count>0表示从头,count<0表示从尾,count=0表示全部。

假设names 现在的元素是 hello hello foo foo hello

lrem names 2 hello 表示从头开始,删除2个hello

lrem names -2 hello 表示从尾开始,删除2个hello

lrem names 0 hello 表示删除全部hello

2.9 ltrim key index1 index2 从index1到index2截取key,【掐头去尾要中间】

ltrim names 1 -2 表示从第2个元素到倒数第2个元素截取names,

2.10 rpoplpush list1 list2 从list1尾部弹出一个元素,在添加到list2的头部。

2.11 lindex list1 2 list1中第3个位置的元素。

2.12 llen list1 返回list1的元素个数/长度。

三、set类型: 无需不可重复

3.1 sadd: 创建set,并放入值

sadd beans b1

sadd beans b2

sadd beans b3 目前beans中有b1、b2、b3,但是无序。

3.2 srem: 从指定的set中删除指定的值

srem beans b1 从beans中删除b1

3.3 sismember:判断给定的值是不是在指定的set中

sismember beans b1 返回0, 表示b1不存在于这个set中

sismember beans b2 返回1, 表示b2存在于这个set中

3.4 smembers:返回指定set的所有成员。

Smembers beans 返回b2、b3。 beans的成员

3.5 spop 从指定的set中随机删除一个元素

spop beans 随机删除一个,并返回这个元素

3.6 sunion:合并两个set ,并返回所有元素。

sadd fruits f1

sadd fruits f2

sadd fruits f3

sunion beans fruits 返回b2、b3、f1、f2、f3,但是是无序的。

3.7 sdiff set1 set2 返回set1的元素,不返回set2的

假设set1 中有hello,hala,set2中有hello aloha

sdiff set1 set2 返回的是set1中区别于set2的元素,而不是set1和set2 数学上的差集

3.8 sdiffstore

sdiffstore set3 set1 set2 和sdiff相似,只不过是把找出来的元素 存在set3中而已。

3.9 sinter set1 set2 求两个set的交集,无特殊点

3.10 sinterstore set4 set1 set2 将set1和set2的交集存在set4中。

3.11 sunionstore set5 set1 set2 将set1和set2的并集存在set5中。

3.12 smove set1 set6 element 解:将set1中的element移除,并存入set6中

3.13 scard set 返回set的元素个数。

3.14 srandmember set 随机返回set中的一个元素,但不删除。

四、Sorted Set:其中每个值都有一个关联的值,用于在有序set中排序其中的值。

4.1、zadd: 创建有序set,按照数字大小有序排列。

zadd hackers 1940 “Alan kay”

zadd hackers 1906 “Grace Hopper”

zadd hackers 1953 “Richard Stallman”

zadd hackers 1965 “Yukihiro Matsumoto”

zadd hackers 1916 “Claude Shanon”

zadd hackers 1969 “Linus Torvalds”

zadd hackers 1957 “Sophie Wilson”

zadd hackers 1912 “Alan Turning”

4.2、zrange set`s name begin end withscores 【begin从0开始】

zrange hackers 2 4 withscores 从第2个,到第4个元素,按score排列。

zrevrange setname 0 -1 withsocres 和zrange顺序相反。

zrangebyscore setname 0 -1 [withscores] 按照score的区间返回元素。

4.3 zincrby setname increment element

zincrby hackers 50 Alan kay Alan kay的score变成1990

4.4 zrank setname element 有序set内先按照score小到大排列。

zrank hackers Alan kay 返回Alan kay的下标,不是score。

4.5 zrevrank setname element 有序set内先按照scored大到小排列。

zrevrank hackers Alan kay 返回下表,不是score

4.6 zcount setname index1 index2 返回set中 score在index1和index2中的元素。

4.7 zcard setname 返回set的元素个数。

4.8 zscore setname element 返回element的score

4.9 zremrangebyrank setname index1 index2

删除下表在index1和index2之间的元素和score,注:不是按score删。

4.10 zremrangebyscore index1 index2 删除score在ind1和ind2的元素。

五、hashes

Redis hash 是一个string类型的field和value的映射表,他的添加、删除操作都是O(1)平均。Hash特别适用于存储对象,比将属性存成单个string类型,hash会占用更少的空间,并且可以方便的存取整个对象。省内存的原因是新建一个hash对象时开始使用zipmap(又称small hash)来存储。这个zipmap并不是hash table,但是比hash实现可以节省不少hash本身需要的一些元数据开销。尽管zipmap的添加删除、查找都是O(n),但是由于一般对象的field都不多。所以zipmap还是很快的,类似O(1),如果filed或者value的大小超过一个限制后,Redis会在内部自动将zipmap替换成正常的hash实现,这个限制可以在配置文件中指定:

#配置字段最多64个

Hash-max-zipmap-entries 64

#配置value最大为512字节

Hash-max-zipmap-value 512

5.1、hset:创建hashes。 Hmset:一条语句完成下面3行的工作,属性之间用空格隔开。

Hset user:1000 name “Mary Jones”

Hset user:1000 password “hidden”

Hsetnx user:1000 visits 5 visits已经存在,不能设置

Hset user:1000 email “MaryJones@example.com”

上面创建了一个user对象,并添加name、password、email属性。

5.2、hgetall:获得指定对象的所有属性。 Hget:获得指定对象的单一属性。

Hgetall user:1000 返回所有user:1000属性的key-value。

Hget user:1000 name 返回user:1000的name属性。

Hmget user:1000 name address 批量获得user:1000的制定属性们。

5.3、hincrby:指定某个对象的某个属性的增量。hdel:删除指定对象的某个属性。

Hset user:1000 visits 1 属性visits为1

Hincrby user:1000 visits 10 属性visits增加10

Hdel user:1000 visits 删除visits属性

Hincrby user:1000 visits 10 创建visits属性,并设置10增量。

Hexists:Hexists user:1000 name 判断user:1000是否有name属性

Hlen:Hlen user:1000 返回user:1000的field的个数。

Hdel:Hdel user:1000 name 删除user:1000的name属性。

Hkeys:Hkeys user:1000 返回user:1000的所有field。

Hvals:Hvals user:1000 返回user:1000的所有value。

六、系统命令:

keys * *代表所有字符,显示当前所有的键。

keys li* 返回所有以li开头的key。

exists key 判断某个key是否存在。

del key 删除key代表的元素。

move key [1|2|...] 将某个key移到其他db当中,后面的1、2 代表的就是redis的db。

select [1|2|...] 选择1或者2或者其他号数据库。

expire key secs 设置key的存活时间 单位:秒。

persist key 移除制定key的存活时间。

randomkey 随机返回一个key

rename name newname 重命名name为newname。

type key 返回这个key代表的类型,string、list、hash、set、zset

七、Redis desktop manager:

1、安装rdm,建立连接

Add new Connection

Connection settings

name: 随便起个名字

host: redis-server所在机器的ip地址

port:6379 默认

auth:授权密码

Ok 连接成功

2、关于redis授权密码:Redis.conf中找到requirepass ,修改成你自己的密码,保存退出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: