Redis五种数据类型

Redis-五种数据类型

推荐一个网站,redis命令学习
http://redisdoc.com/

String类型

String:key-value 相当于Java中的map

##set key value [expiration EX seconds|PX milliseconds] [NX|XX]

EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value。
PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value 。
NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value
XX : 只在键已经存在时, 才对键进行设置操作。

##set get del操作
127.0.0.1:6379> set name kun
OK
127.0.0.1:6379> get name
"kun"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)

##setnx 当key不存在时新建
127.0.0.1:6379> set age 10
OK
127.0.0.1:6379> get age
"10"
127.0.0.1:6379> setnx age 11
(integer) 0
127.0.0.1:6379> setnx age_new 11
(integer) 1
127.0.0.1:6379> get age_new
"11"

##append为age追加值
127.0.0.1:6379> append age 2
(integer) 3//返回age内容的长度
127.0.0.1:6379> get age
"102"
##strlen查看内容长度
127.0.0.1:6379> strlen age
(integer) 3

##ttl (time to leave)判断key是否过期,-1为没有设置过期时间,-2则为过期
127.0.0.1:6379> ttl age
(integer) -1
127.0.0.1:6379> expire age 30//为age添加过期时间
(integer) 1
127.0.0.1:6379> ttl age
(integer) 28
127.0.0.1:6379> ttl age
(integer) -2

##incr decr累加累减(仅对于数值可用)
127.0.0.1:6379> incr age
(integer) 103
127.0.0.1:6379> decr age
(integer) 102
127.0.0.1:6379> set name abc
OK
127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
##incrby decrby 指定数值加减(仅对于数值可用)
127.0.0.1:6379> incrby age 10
(integer) 112
127.0.0.1:6379> decrby age 10
(integer) 102

##getrange 通过下标截取内容
127.0.0.1:6379> get name
"abc"
127.0.0.1:6379> getrange name 0 1
"ab"
127.0.0.1:6379> getrange name 0 -1//-1为无穷大
"abc"

##setrange 通过下标设置内容
127.0.0.1:6379> get name
"abc"
127.0.0.1:6379> setrange name 1 "i like basketball"
(integer) 18
127.0.0.1:6379> get name
"ai like basketball"

##mset mget 批量设置和批量获取(msetnx 不能包含有存在的值)
127.0.0.1:6379> mset key1 value1 key2 value2
OK
127.0.0.1:6379> mget key1 key2
1) "value1"
2) "value2"
127.0.0.1:6379> msetnx key1 value1 key3 value3
(integer) 0//导致key3也添加不进去

##flushdb清除当前库(redis默认有16个库)所有内容(慎用)
127.0.0.1:6379> flushdb
OK
##flushall 清除所有库内容(慎用)
127.0.0.1:6379> flushall
OK
##exists值是否存在
127.0.0.1:6379> exists name
(integer) 1

Hash类型

Hash:key-fields-values
相当于一个key对应一个map,map中还有key,value。

##hset,hget,hdel
127.0.0.1:6379> hset user name zhangsan
(integer) 1
127.0.0.1:6379> hget user name
"zhangsan"
127.0.0.1:6379> del user name
(integer) 1
##hmset,hmget
127.0.0.1:6379> hmset user name zhangsan age 18 sex man
OK
127.0.0.1:6379> hmget user name age sex
1) "zhangsan"
2) "18"
3) "man"
##hgetall获取hash的所有键值
127.0.0.1:6379> hgetall user
1) "name"
2) "zhangsan"
3) "age"
4) "18"
5) "sex"
6) "man"
##hlen查看hash里面存放了多少个key
127.0.0.1:6379> hlen user
(integer) 3
##hkeys查看hash中的所有key
127.0.0.1:6379> hkeys user
1) "name"
2) "age"
3) "sex"
##hvals查看hash中的所有值
127.0.0.1:6379> hvals user
1) "zhangsan"
2) "18"
3) "man"
##hexists查看hash中是否存在
127.0.0.1:6379> hexists user age
(integer) 1
##hincrby,hincrbyfloat
127.0.0.1:6379> hincrby user age 1
(integer) 19
127.0.0.1:6379> hincrbyfloat user age 1.5
"20.5"

List类型

List:有顺序可重复

##lpush,rpush,lrange,lpop,rpop
127.0.0.1:6379> lpush list pig cow sheep chicken duck
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "duck"
2) "chicken"
3) "sheep"
4) "cow"
5) "pig"
127.0.0.1:6379> rpush list2 pig cow sheep chicken duck
(integer) 5
127.0.0.1:6379> lrange list2 0 -1
1) "pig"
2) "cow"
3) "sheep"
4) "chicken"
5) "duck"
127.0.0.1:6379> lpop list
"duck"
127.0.0.1:6379> lrange list 0 -1
1) "chicken"
2) "sheep"
3) "cow"
4) "pig"
127.0.0.1:6379> rpop list2
"duck"
127.0.0.1:6379> lrange list2 0 -1
1) "pig"
2) "cow"
3) "sheep"
4) "chicken"
##llen查看对应的list长度
127.0.0.1:6379> llen list
(integer) 4
##lindex查看list对应index的值
127.0.0.1:6379> lindex list 1
"sheep"
##lset设置list对应位置的值
127.0.0.1:6379> lset list 1 1001
OK
127.0.0.1:6379> lrange list 0 -1
1) "chicken"
2) "1001"
3) "cow"
4) "pig"
##linsert对list进行插入值,before在某个值之前插入,after在某个值后面插入
127.0.0.1:6379> linsert list before 1001 aaa
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "chicken"
2) "aaa"
3) "1001"
4) "cow"
5) "pig"
127.0.0.1:6379> linsert list after 1001 bbb
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "chicken"
2) "aaa"
3) "1001"
4) "bbb"
5) "cow"
6) "pig"
##lrem对list进行删除值
##count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
##count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
##count = 0 : 移除表中所有与 VALUE 相等的值。
127.0.0.1:6379> lrem list  1 aaa
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "chicken"
2) "1001"
3) "bbb"
4) "cow"
5) "pig"
##ltrim截取list并且替换原来的list
127.0.0.1:6379> ltrim list 0 2
OK
127.0.0.1:6379> lrange list 0 -1
1) "chicken"
2) "1001"
3) "bbb"

Set类型

Set:无顺序,不能重复

##sadd 
127.0.0.1:6379> sadd animal duck pig cow sheep sheep sheep pig
(integer) 4//只会成功4个,因为不允许重复
127.0.0.1:6379> 
##smembers 查看set集合中的值
127.0.0.1:6379> smembers animal
1) "duck"
2) "cow"
3) "sheep"
4) "pig"
##scard查看当前集合中有多少个值
127.0.0.1:6379> scard animal
(integer) 4
##sismember 判断值是否存在set集合中
127.0.0.1:6379> sismember animal duck
(integer) 1
127.0.0.1:6379> sismember animal duck1
(integer) 0
##srem 删除set集合中指定值
127.0.0.1:6379> srem animal pig
(integer) 1
127.0.0.1:6379> smembers animal
1) "duck"
2) "cow"
3) "sheep"
##spop 把set集合中的值推出来
127.0.0.1:6379> spop animal 
"sheep"
127.0.0.1:6379> spop animal 2
1) "cow"
2) "duck"
127.0.0.1:6379> smembers animal
(empty list or set)
##SRANDMEMBER 随机获取值
127.0.0.1:6379> sadd set 1 2 3 4 5 6 7 8 9 10
(integer) 10
127.0.0.1:6379> SRANDMEMBER set
"6"
127.0.0.1:6379> SRANDMEMBER set 2
1) "9"
2) "3"
##smove 将一个集合中的一个值移动到另一个集合中
127.0.0.1:6379> sadd set2 11 12 13 14 15 16 17 18 19 20
(integer) 10
127.0.0.1:6379> smove set2 set 15
(integer) 1
127.0.0.1:6379> smembers set
 1) "1"
 2) "2"
 3) "3"
 4) "4"
 5) "5"
 6) "6"
 7) "7"
 8) "8"
 9) "9"
10) "10"
11) "15"

##sdiff(差集)sinter(交集 ) sunion(并集)

SortedSet类型

SortedSet(zset):有顺序,不能重复

##zadd 新增有序set集合
127.0.0.1:6379> zadd example 10 xiaomi 20 chuizi 30 huawei 40 meizu 50 oppo
(integer) 5
##zrange 查询有序set中的值,加上withscores的话会带上分数
127.0.0.1:6379> zrange example 0 -1
1) "xiaomi"
2) "chuizi"
3) "huawei"
4) "meizu"
5) "oppo"
127.0.0.1:6379> zrange example 0 -1 withscores
 1) "xiaomi"
 2) "10"
 3) "chuizi"
 4) "20"
 5) "huawei"
 6) "30"
 7) "meizu"
 8) "40"
 9) "oppo"
10) "50"
##会对score进行排序
127.0.0.1:6379> zadd example 25 vivo 35 zhongxing
(integer) 2
127.0.0.1:6379> zrange example 0 -1 withscores
 1) "xiaomi"
 2) "10"
 3) "chuizi"
 4) "20"
 5) "vivo"
 6) "25"
 7) "huawei"
 8) "30"
 9) "zhongxing"
10) "35"
11) "meizu"
12) "40"
13) "oppo"
14) "50"
##zrank 查询有序集合中值的下标(这个下标不包含分数的下标)
127.0.0.1:6379> zrank example vivo
(integer) 2
##zscore 查询有序集合中值的分数
127.0.0.1:6379> zscore example vivo
"25"
##zcard 统计有序集合中有多少个值
127.0.0.1:6379> zcard example
(integer) 7
##zcount 统计有序集合中20-60分有多少个值
127.0.0.1:6379> zcount example 20 60
(integer) 6
##zrangebyscore 查找有序集合中20-40分的值
127.0.0.1:6379> zrangebyscore example 20 40
1) "chuizi"
2) "vivo"
3) "huawei"
4) "zhongxing"
5) "meizu"
##加上withscores可以显示分数
127.0.0.1:6379> zrangebyscore example 20 40 withscores
 1) "chuizi"
 2) "20"
 3) "vivo"
 4) "25"
 5) "huawei"
 6) "30"
 7) "zhongxing"
 8) "35"
 9) "meizu"
10) "40"
##加上)则不包含,20<= example score <40
127.0.0.1:6379> zrangebyscore example 20 (40
1) "chuizi"
2) "vivo"
3) "huawei"
4) "zhongxing"
##加上)则不包含,20< example score <=40
127.0.0.1:6379> zrangebyscore example (20 40
1) "vivo"
2) "huawei"
3) "zhongxing"
4) "meizu"
##加上limit,类似于mysql分页,在查询结果后进行分页显示
127.0.0.1:6379> zrangebyscore example 20 40 limit 1 2
1) "vivo"
2) "huawei"
##删除有序集合中的值,可删多个
127.0.0.1:6379> zrem example vivo
(integer) 1

你可能感兴趣的:(redis,后端)