1、string类型命令

设置值:set id 001 获取值:get id  删除键值:del id  验证键是否存在:exists id

显示所有的key:keys *

incr 、incrby指定增加多少、decr、decrby 指定减少多少

127.0.0.1:6379> set counter 1

OK

127.0.0.1:6379> incr counter

(integer) 2

127.0.0.1:6379> incr counter

(integer) 3

127.0.0.1:6379> incrby counter 2

(integer) 5

127.0.0.1:6379> incrby counter 3

(integer) 8

127.0.0.1:6379> decr counter

(integer) 7

127.0.0.1:6379> decrby counter 2

(integer) 5

getset 先获取在设置getset name lisi

mget、mset批量设置、msetnx带事务性的赋值,如果key存在,事务回归,不做赋值处理

127.0.0.1:6379> mset name zhangsan age 11

OK

127.0.0.1:6379> mget name age

1) "zhangsan"

2) "11"

append 追加字符串append name "teacher"

strlen 字符串长度、substr字符串截取substr name 0 6

setex设置过期时间命令单位是秒setex sex 20 male

setnx 设置值,如果key有值,不成功,返回0,否则为1,setnx name tom

setrange 从指定位置开始替换值

127.0.0.1:6379> set myemail abc@sohu.com

OK

127.0.0.1:6379> get myemail

"abc@sohu.com"

127.0.0.1:6379> setrange myemail 4 163.com

(integer) 12

127.0.0.1:6379> get myemail

"abc@163.comm"

getrange字符串截取getrange name 0 6 替换substr命令

 2、list类型命令

list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等。

我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。

1、redis中list列表的数据插入命令:lpush,rpush,linsert,lrange

127.0.0.1:6379>rpush mylist 1   ---结果为:(integer) 1

127.0.0.1:6379>rpush mylist 2   ---结果为:(integer) 2

127.0.0.1:6379>rpush mylist 3   ---rpush命令:向mylist列表中,从右边插入3条数据,返回值为当前列表的容量。结果为:(integer) 3

rpush批量插入  rpush mylist 1 2 3

127.0.0.1:6379>lrange mylist 0 -1   ---lrange命令:查看mylist列表中的数据,0开始位置,-1结束位置,结束位置为-1时,表示列表的最后一个位置,即查看所有。结果为:1> "1"  2> "2"  3> "3"

127.0.0.1:6379>lpush mylist 0   ---lpush命令:向mylist列表中,从左边插入一条数据为0的数据

127.0.0.1:6379>lrange mylist 0 -1   ---结果为:1>"0"  2>"1"  3>"2"  4>"3"

127.0.0.1:6379>linsert mylist after 3 4   ---linsert命令,表达式为linsert key before|after pivot value ;这句命令的意思是在key为mylist的列表中查找值为3的数据,在其后插入一条值为4的数据。

127.0.0.1:6379>lrange mylist 0 -1   ---结果为:1>"0"  2>"1"  3>"2"  4>"3"  5>"4"

127.0.0.1:6379>linsert mylist before 0 -1   ---意思是:在key为mylist的列表中查找值为0的数据,在其前插入一条值为-1的数据。

127.0.0.1:6379>lrange mylist 0 -1    ---结果为:1>"-1"  2>"0"  3>"1"  4>"2"  5>"3"  6>"4"

127.0.0.1:6379>lisert mylist after 5 8    ---结果为:-1,由于mylist列表不存在值为5的数据,所以不执行任何操作,返回状态值-1。如果key不存在时,返回错误提示。

127.0.0.1:6379>lrange mylist 0 -1   ---结果为:1>"-1"  2>"0"  3>"1"  4>"2"  5>"3"  6>"4"

2、redis中list列表的数据删除命令:lpop,rpop,ltrim

127.0.0.1:6379>lpop mylist    ---lpop命令:从列表中的左边移除一条数据,同时输出被删除的数据,这里输出的结果为-1

127.0.0.1:6379>lrange mylist 0 -1   ---结果为:1>"0"  2>"1"  3>"2"  4>"3"  5>"4"

127.0.0.1:6379>rpop mylist   ---rpop命令:从列表的右边移除一条数据,同时输出被删除的数据,这里输出的结果为4

127.0.0.1:6379>lrange mylist 0 -1   ---结果为:1>"0"  2>"1"  3>"2"  4>"3"

127.0.0.1:6379>ltrim mylist 1 3   ----ltrim命令:保留设定的两个下标区间的值,删除不在其区间的所有值。1为开始保留的下标值,3为结束保留的下标值。

127.0.0.1:6379>lrange mylist 0 -1   ---结果为:1>"1"  2>"2"  3>"3"

3、redis中list列表的数据查看命令:llen,lindex

127.0.0.1:6379>llen mylist   ---llen命令:返回列表的长度,这里mylist只剩下4条数据,故输出结果为4

127.0.0.1:6379>lindex mylist 3   ---lindex命令:获取给定位置的数据,这里坐标为3的数据是"2",所以结果为2.

4、redis中list列表数据修改命令:lset

127.0.0.1:6379>lset mylist 2 zlh   ---lset命令:把下标为2的值设置为zlh,如果下标值超出范围或对一个空list列表进行lset,那么将返回一个错误提示

127.0.0.1:6379>lrange mylist 0 -1   ---结果为: 1>"1"  2>"2"  3>"zlh"

5、redis中list列表,两个列表A,B,将A列表的尾元素添加到B列表的头元素中,命令:rpoplpush

#这里我有连个列表A数据为{1,2,3} ,B列表数据为{4,5,6}

127.0.0.1:6379>rpoplpush A B

127.0.0.1:6379>lrange A   ---结果为:1>"1' 2>"2"

127.0.0.1:6379>lrange B   ---结果为:1>"3' 2>"4" 3>"5" 4>"6"

6、redis中的几个带阻塞的高级命令:blpop,brpop,brpoplpush

127.0.0.1:6379>blpop A 30   ---意思是:A列表有值的话,从左边移除一个数据,如果没有值的话,则等待A中插入数据为止,等待时间为30秒,如果时间设置为0表示阻塞时间无限延长

127.0.0.1:6379>brpoplpush A B 30   ---意思是:将A列表的尾元素添加到B列表的头元素中,如果A列表中有值则插入,如果没值,则等待A中插入数据为止,等待时间为30秒,如果时间设置为0表示阻塞时间无限延长

3、Set类型

Set和list都是字符串序列,非常相似,不同的是Set是用哈希表来保持字符串的唯一性,没有先后顺序。

redis中set列表的新增命令Sadd,key值相同下的value值不能重复,返回插入的数据个数,key后面可跟多个value值

127.0.0.1:6379>sadd mySet 1   ---添加key为mySet的set数据值为1,

127.0.0.1:6379>sadd mySet 2 4 5  ---添加key为mySet的set数据值为2 4 5,

redis中查看set数据集合的命令:smembers,可以获取全部的元素,当set成员比较多时考虑其性能啊

127.0.0.1:6379>smembers  mySet     ---获取key为mySet的说有set数据值集合

redis中set判断某个key的value中是否存在某个值的命令:sismember ,如果存在返回1,不存在返回0

127.0.0.1:6379>sismember mySet 3  ---返回值为0,因为myset的set成员中只有1,2没有3

127.0.0.1:6379>sismember mySet 2   ---返回值为1,因为myset的Set成员中存在2.

redis中set的删除数据命令srem,返回删除个数,key后面可跟多个value值

127.0.0.1:6379>srem mySet 1   ---删除key为mySet,value为1的数据项。

127.0.0.1:6379>srem mySet 2 4     ---删除key为mySet,value为2和4的2个数据项。

redis中查看set数据个数的命令scard,如果不存在返回0

127.0.0.1:6379>scard mySet   ---查看mySet中存在多少个数据项

redis中set随机查看元素命令srandmember

127.0.0.1:6379>srandmember mySet   ---输出key为mySet的数据项中的随机一个value,

redis中set随机删除一个元素的命令spop,并返回输出删除的数据

127.0.0.1:6379>spop mySet    ----随机从key为mySet的数据集合中删除一条数据,并返回输出删除的数据

redis中set将一个set中的元素移动到另外一个set中的命令smove

127.0.0.1:6379>sadd mySet 1 2 3    ----向mySet中添加3条数据 1 2 3

27.0.0.1:6379>sadd youSet 3 4 5     ----向youSet中添加3条数据 3 4 5

127.0.0.1:6379>smove youSet mySet 4  ---将youSet中的数据4移除的同时将数据4添加到mySet中

127.0.0.1:6379>smembers mySet   ---结果为:1 2 3 4

127.0.0.1:6379>smembers youSet   ---结果为 3 5

redis中set求交集命令sinter

127.0.0.1:6379>sinter mySet youSet   ---输出结果为mySet和youSet的交集,输出结果为:3

redis中set求并集的命令sunion

127.0.0.1:6379>sunion mySet youSet    ---输出结果为mySet与youSet的并集,输出结果为:1 2 3 4 5

redis中set求差集的命令sdiff

127.0.0.1:6379>sdiff mySet youSet     ---输出结果为mySet中youSet不存在的数据,输出结果为:1 2 4

127.0.0.1:6379>sdiff youSet mySet   ---输出结果为youSet中mySet不存在的数据,输出结果为:5

4、SortedSet类型命令

Sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列字段的数据表,一列存value,一列存顺序编号。操作中key理解为zset的名字。

有序集合Zset的操作:

zadd:向名称为key的zset中添加元素member,score用于排序。如果该元素存在,则更新其顺序。(用法:zadd 有序集合顺序编号元素值)

127.0.0.1:6379> zadd zset1 1 two
(integer) 1
127.0.0.1:6379> zadd zset1 2 one
(integer) 1
127.0.0.1:6379> zadd zset1 3 seven
(integer) 1

127.0.0.1:6379> zrange zset1 0 -1 
1) "two"
2) "one"
3) "seven"
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "1"
3) "one"
4) "2"
5) "seven"
6) "2"

zrem:删除名称为key的zset中的元素。(用法:zrem 有序集合要删除的元素值)

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "one"
4) "2"
5) "seven"
6) "2"
127.0.0.1:6379> zrem zset1 one
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "1"
3) "seven"
4) "2"

zincrby:如果在名称为key的zset中已经存在元素member,则该元素的score增加increment,否则向该集合中添加该元素,其score的值为increment.即对元素的顺序号进行增加或减少操作。(用法:zincrby 有序集合 increment 指定的元素值)

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "seven"
4) "2"
127.0.0.1:6379> zincrby zset1 5 seven
"7"
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "1"
3) "seven"
4) "7"

zrank:返回名称为key的member元素的排名(按score从小到大排序)即下标。(用法:zrank 有序集合指定的元素值),返回值为指定的元素值的索引下标号。

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "seven"
4) "7"
127.0.0.1:6379> zrank zset1 seven
(integer) 1

zrevrank:返回名称为key的member元素的排名(按score从大到小排序)即下标。(用法:zrank 有序集合指定的元素值)

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "seven"
4) "7"
127.0.0.1:6379> zrevrank zset1 seven
(integer) 0

zrange:显示集合中指定下标的元素值(按score从小到大排序)。如果需要显示元素的顺序编号,带上withscores。(用法:zrange 有序集合  下标索引1 下标索引2 withscores)

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "five"
4) "2"
5) "one"
6) "3"
7) "seven"
8) "7"

zrevrange:显示集合中指定下标的元素值(按score从大到小排序)。如果需要显示元素的顺序编号,带上withscores。(用法:zrevrange 有序集合  下标索引1 下标索引2 withscores)

127.0.0.1:6379> zrevrange zset1 0 -1
withscores
1) "seven"
2) "7"
3) "one"
4) "3"
5) "five"
6) "2"
7) "two"
8) "1"

zrangebyscore:显示指定范围顺序编号的元素(按score从小到大排序)。(用法:zrangebyscore 有序集合顺序编号1 顺序编号2 withscores)

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "five"
4) "2"
5) "one"
6) "3"
7) "seven"
8) "7"
127.0.0.1:6379> zrangebyscore zset1 2
7 withscores
1) "five"
2) "2"
3) "one"
4) "3"
5) "seven"
6) "7"

zcount: 返回集合中score在给定区间的数量。(用法:zcount 有序集合顺序编号1 顺序编号2)

127.0.0.1:6379> zcount zset1 2 7
(integer) 3

zcard:返回集合中元素个数。(用法:zcard 有序集合)

127.0.0.1:6379> zrange zset1 0 -1
1) "two"
2) "five"
3) "one"
4) "seven"
127.0.0.1:6379> zcard zset1
(integer) 4

zremrangebyrank:删除集合中排名在给定区间的元素。(按索引下标删除)(用法:zremrangebyrank 有序集合索引编号1 索引编号2)

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "five"
4) "2"
5) "one"
6) "3"
7) "seven"
8) "7"
127.0.0.1:6379> zremrangebyrank zset1 3 3
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "1"
3) "five"
4) "2"
5) "one"
6) "3"

zremrangebyscore:删除集合中score在给定区间的元素(按顺序score值来删除)。(用法:zremrangebyscore 有序集合顺序编号1 顺序编号2)

127.0.0.1:6379> zrange zset1 0 -1
withscores
1) "two"
2) "1"
3) "five"
4) "2"
5) "one"
6) "3"
7) "seven"
8) "7"
127.0.0.1:6379> zremrangebyscore zset1 5
7
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "1"
3) "five"
4) "2"
5) "one"
6) "3"

5、hash类型

redis中hash对单个key/value操作的命令演示

redis中hash的添加命令hset,如果key不存在,创建key,存在,则覆盖原有值

redis 127.0.0.1:6379>hset
myhash name Jim  ----给key为myset的键值设置键为name值为Jim

redis中hash的查看命令hget

redis 127.0.0.1:6379>hget
myhash name   ----输出: "Jim",获取key为myset,键为name的value

redis 127.0.0.1:6379>hset
myhash name zlh   ----覆盖原有值,值改为zlh替换Jim

redis 127.0.0.1:6379>hget
myhash name   ---输出:"zlh"

redis中hash的获取key包含的field数量的命令hlen

redis 127.0.0.1:6379>hset
myhash age 31 --- 设置key为myset键为age的value=31

redis 127.0.0.1:6379>hlen
myhash   ---输出为2,key为myset的field数量为2

redis中判断指定key中指定field是否存在的命令hexists,存在返回1,不存在返回0

redis
127.0.0.1:6379>hexists myhash name   ---返回1,说明存在

redis
127.0.0.1:6379>hexists myhash name1  ---返回0,说明不存在

redis中hash删除命令hdel,删除一个或多个指定的字段

redis 127.0.0.1:6379>hset
myhash sex nan   ----添加数据

redis 127.0.0.1:6379>hset
myhash issingle yes  ----添加数据

redis 127.0.0.1:6379>hset
myhash hobby sports  ----添加数据

redis 127.0.0.1:6379>hdel
myhash hobby  ----删除单个数据,filed为hobby的数据

redis 127.0.0.1:6379>hdel
myhash issingle sex   ---删除多个数据,filed为issingle和sex的两条数据

redis中hash如果key或field不存在插入有效,否则不采取操作的命令hsetnx

redis
127.0.0.1:6379>hsetnx myhash sex nan   ---设置myhash,field为sex的value为nan,成功返回1,因为原来不存在sex这个字段

redis
127.0.0.1:6379>hsetnx myhash sex nv   ---设置myhash,field为sex的value为nv,不成功返回0,因为原来存在sex这个字段并且有值

redis 127.0.0.1:6379>hget
myhash sex   --输出"nan"

redis中hash中的value为数值时操作增减的命令hincrby

redis 127.0.0.1:6379>del
myhash  ---删除该键

redis 127.0.0.1:6379>hset
myhash age 31  ---设置key为myhash的键为age值为31

redis
127.0.0.1:6379>hincrby myhash age 10   ---给key为myhash,键为age的值加10,输出结果为41

redis
127.0.0.1:6379>hincrby myhash age -10   ---给key为myhash,键为age的值减去10,输出结果为31

redis中hash批量操作key/value的命令演示

批量添加key/value的命令hmset

redis 127.0.0.1:6379>del
myhash  --删除该键

redis 127.0.0.1:6379>hmset
myhash name zlh age 31 issingle no ----给key为myhash的hash添加name=zlh,age=31,issingle=no的多个键值

批量获取key/value的命令hmget

redis 127.0.0.1:6379>hmget
myhash name age issingle   ----输出结果为:zlh 31 no

根据myhash键获取所有的字段及value的命令hgetall

redis
127.0.0.1:6379>hgetall myhash   ----输出结果为:name age issingle zlh 31 no

获取所有的field的命令hkeys

redis 127.0.0.1:6379>hkeys
myhash   ---输出结果为:name age issingle

获取所有字段的值的命令hvals

redis 127.0.0.1:6379>hvals
myhash  ----输出结果为:zlh 31 no

Redis五种数据类型命令介绍(4)的更多相关文章

  1. redis五种数据类型的使用(zz)

    redis五种数据类型的使用 redis五种数据类型的使用 (摘自:http://tech.it168.com/a2011/0818/1234/000001234478_all.shtml ) 1.S ...

  2. redis五种数据类型的使用

    redis五种数据类型的使用 redis五种数据类型的使用 (摘自:http://tech.it168.com/a2011/0818/1234/000001234478_all.shtml ) 1.S ...

  3. redis五种数据类型的使用场景

    string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

  4. Redis五种数据类型-设置key的过期时间

    1.redis命令客户端 [root@localhost bin]# ./redis-cli 127.0.0.1:6379> #是否运行着 127.0.0.1:6379> ping PON ...

  5. (转) 淘淘商城系列——Redis五种数据类型介绍

    http://blog.csdn.net/yerenyuan_pku/article/details/72855562 Redis支持五种数据类型:string(字符串),hash(哈希),list( ...

  6. Redis五种数据类型应用场景

    目录 1.1 回顾 2.1 应用场景 2.1.1 String 2.1.2 Hash 2.1.3 List 2.1.4 Zet 2.1.5 zset 3.1 小结 1.1 回顾 Redis的五种数据类 ...

  7. redis五种数据类型的应用

    redis的五种数据类型和使用场景 string类型 string类型多用于缓存 set key value(value可以为json字符串) setnx多用于分布式锁(后面详细整理) 计数器 inc ...

  8. redis五种数据类型和常用命令及适用场景

    一.redis的5种数据类型: 1.基础理解: string 字符串(可以为整形.浮点型和字符串,统称为元素) list 列表(实现队列,元素不唯一,先入先出原则) set 集合(各不相同的元素) h ...

  9. 《闲扯Redis三》Redis五种数据类型之List型

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

随机推荐

  1. sql server中对xml进行操作

    一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...

  2. hg0088新2网址:已经做好了封装直接拿来就能用功能齐全

    很简单,InkCanvas就不用多介绍了,它是一个面板,特点是你可以在它上面涂抹,就像大街上那些妖怪那样,把化妆品往脸上乱涂,涂得人不像人,鸡不像鸡. InkToolBar呢是一个现成的工具栏,你可以 ...

  3. sift特征

    已经有很多博客已经将sift特征提取算法解释的很清楚了,我只是记录一些我不明白的地方,并且记录几个理解sift特征比较好的博客. 1. http://aishack.in/tutorials/sift ...

  4. webApp开发

    1.Viewport:视口屏幕,可以操作的属性如下: width //viewport的宽度,范围从200-10000,默认为980像素 height //viewport的高度 initial-sc ...

  5. JQuery选择器JQuery 事件

    JQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") ...

  6. 【转载】如何用IntelliJ IDEA 14 创建Web项目

    首先要理解一个概念:在IntelliJ IDEA中"new Project"相当于eclipse中的工作空间(Workspace),而"new Module"相 ...

  7. macOS Sierra U盘USB启动安装盘

    http://www.iplaysoft.com/macos-usb-install-drive.html 文章里提供了一个软件可以自动化操作,但是试了下,不行,试了两三次还是不行,只有参照文章中的第 ...

  8. eclipse中的classes文件夹同步问题

    问题: 在同步项目时,由于误操作将classes文件夹加入到了同步版本中,这样会导致每次更新程序编译后,会有很多class文件显示在同步清单中. 解决方案: 将classes文件不设置为同步. 1. ...

  9. linux 命令01

    mkdir 创建目录 cd 进入目录 touch 创建文件 touch oldboy.txt vi 编辑器,相当于记事本,有编辑功能,较弱 vim 复杂编辑器,相当于,emeditor,editplu ...

  10. 转载:如何让spring mvc web应用启动时就执行

    转载:如何让spring mvc web应用启动时就执行特定处理 http://www.cnblogs.com/yjmyzz/p/4747251.html# Spring-MVC的应用中 一.Appl ...