redis数据类型--简单测试

一.分类

redis有五种数据类型:String,map,list,set,zset(set 的有序集合)

二.String

存:set

语法:set key value [EX seconds] [PX milliseconds] [NX|XX]

redis > set myStr test
OK

取:get

语法:get key
redis > get myStr
"test"

删除:del

语法:del key [key ...]
redis > del myStr
(integer) 1

三.map

存:hmset

语法:hmset key field value [field value ...]

redis > hmset mymap field1 value1 field2 value2
OK

取:hget(取单个),hgetall(取所有)

语法1:hget key field

eg:
redis > hget mymap field2
"value2"

语法2:hgetall key

eg:
 redis > hgetall mymap
1) "field1"
2) "value1"
3) "field2"
4) "value2"
5) "field3"
6) "value3"

删:hdel

语法:hdel key field [field ...]

redis > hdel map field1 field2
(integer) 2

四.list

存:lpush

语法:lpush key value [value ...]

eg:
redis > lpush mylist v1 v2 v3 v4
(integer) 4

取:

1.读取列表: lrange

语法:lrange key start stop

eg:
redis > lrange mylist 0 10
1) "v4"
2) "v3"
3) "v2"
4) "v1"

2.按索引读取:lindex

语法:lindex key index(index从0开始)

redis > lindex mylist 2
"v2"

3.按值查索引

删除

1.头部弹出,并返回值 lpop(rpop尾部弹出 刚好和这个相反)

redis > lrange mylist 0 10
1) "v4"
2) "v3"
3) "v2"
4) "v1"
redis > lpop mylist
"v4"
redis > lrange mylist 0 10
1) "v3"
2) "v2"
3) "v1"

上面刚开始查"v4"在最上面,执行完lpop后"v4"被返回,再次执行查看语句,发现"v4"已经被移出

2.lrem :删除list中某个值。

语法:lrem key count value
##count = 0 删除全部
##count = -n(n>0) 从尾部删除 删n个
##count = n(n>0) 从头部删 删n个

##查看原始list
127.0.0.1:6379> lrange mylist 0 10
1) "v3"
2) "v2"
3) "v7"
4) "v3"
5) "v5"
6) "v4"
7) "v3"
8) "v2"
9) "v1"

##执行删除 count设为0 删除所有值为v3的结点
127.0.0.1:6379> lrem mylist 0 v3
(integer) 3

##查看删除后的list,值为v3的不见了
127.0.0.1:6379> lrange mylist 0 10
1) "v2"
2) "v7"
3) "v5"
4) "v4"
5) "v2"
6) "v1"

##再次执行删除 count设置为-1 删除值为v2的
127.0.0.1:6379> lrem mylist -1 v2
(integer) 1

##查看结果,原来v2位置分别是1 和5 现在5的位置v2被删除了,说明删除是从尾部开始的
127.0.0.1:6379> lrange mylist 0 10
1) "v2"
2) "v7"
3) "v5"
4) "v4"
5) "v1"

##插入几条数据后继续查看 -1代表到结尾
127.0.0.1:6379> lrange mylist 0 -1
1) "v2"
2) "v4"
3) "v3"
4) "v5"
5) "v4"
6) "v1"

##执行删除操作 从头部删除 删除两个
127.0.0.1:6379> lrem mylist 2 v4
(integer) 2

##可以看到v4都没了
127.0.0.1:6379> lrange mylist 0 -1
1) "v2"
2) "v3"
3) "v5"
4) "v1"

3.ltrim: 截取某个范围的list

语法:ltrim key start stop

eg:

127.0.0.1:6379> lrange mylist 0 -1
1) "v2"
2) "v3"
3) "v5"
4) "v1"
127.0.0.1:6379> ltrim mylist 1 -1
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "v3"
2) "v5"
3) "v1"

上述例子可以看出,当我ltrim范围选择1 -1(redis中尾部) 他会将mylist截取掉原本index =0 的v2,保留index范围在1~-1之间的数

五.set

存:sadd

语法 SADD key member [member ...]

eg:

##因为set不能重复 所以只插入了四条
127.0.0.1:6379> SADD myset v1 v2 v3 v4 v2
(integer) 4

##当插入值上面存在时插入失败
127.0.0.1:6379> sadd myset v3
(integer) 0

##当插入值set中不存在插入成功
127.0.0.1:6379> sadd myset v5
(integer) 1

取:smembers

语法:smembers key

eg:
127.0.0.1:6379> SMEMBERS myset
1) "v5"
2) "v2"
3) "v9"
4) "v1"
5) "v3"
6) "v4"

由此可以看出set是无序的 做个试验发现 只有当set中数据变动时顺序才改变

##第一次查看set值
127.0.0.1:6379> SMEMBERS myset
1) "v5"
2) "v2"
3) "v9"
4) "v1"
5) "v3"
6) "v4"

##第二次查看set值 期间没有数据变动 数据顺序与第一次一样
127.0.0.1:6379> SMEMBERS myset
1) "v5"
2) "v2"
3) "v9"
4) "v1"
5) "v3"
6) "v4"

##第三次查看set值 期间没有数据变动 数据顺序与第一次一样
127.0.0.1:6379> SMEMBERS myset
1) "v5"
2) "v2"
3) "v9"
4) "v1"
5) "v3"
6) "v4"

##先添加一个已有的数据 造成数据添加失败 查看是否会变化
127.0.0.1:6379> sadd myset v9
(integer) 0

##第四次查看set 由于数据添加失败,数据顺序还是与第一次一致
127.0.0.1:6379> SMEMBERS myset
1) "v5"
2) "v2"
3) "v9"
4) "v1"
5) "v3"
6) "v4"

##添加一个没有的数据 造成set插入现象
127.0.0.1:6379> sadd myset v10
(integer) 1

##查看数据 发现原本的set中的值相对位置也没有发生变化 只有新插入的值随机插了一个地方
127.0.0.1:6379> SMEMBERS myset
1) "v5"
2) "v2"
3) "v9"
4) "v1"
5) "v10"
6) "v3"
7) "v4"

##再次添加成功测试
127.0.0.1:6379> sadd myset v6
(integer) 1

##结果与上次一样 说明set是随机插入 但是插入后顺序不变
127.0.0.1:6379> SMEMBERS myset
1) "v5"
2) "v2"
3) "v6"
4) "v9"
5) "v1"
6) "v10"
7) "v3"
8) "v4"

六.tset

存:zadd

语法:zadd key [NX|XX] [CH] [INCR] score member [score member ...]

eg:

127.0.0.1:6379> zadd myzset 0 v1
(integer) 1
127.0.0.1:6379> zadd myzset 1 v2
(integer) 1
127.0.0.1:6379> zadd myzset 0 v3
(integer) 1

取:ZRANGEBYSCORE

语法: ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

eg:

127.0.0.1:6379> ZRANGEBYSCORE myzset 0 10
1) "v1"
2) "v3"
3) "v2"
posted @ 2018-05-18 00:23  爪哇岛求生记  阅读(139)  评论(0编辑  收藏  举报