Redis-02.数据类型
Redis中所有数据都是以key-value存储的,value支持的数据类型包括string、hash、list、set、sorted_set
数据类型
string 是redis最基本的类型,一个key对应一个value;
hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象;
list 是简单的字符串列表,按照插入顺序排序;
set 是string类型的无序集合;
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
0 key
查找已保存的key用keys pattern,先用help <command>
查看keys的详细信息
127.0.0.1:6379> help keys
KEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic
127.0.0.1:6379>
0.1 基本命令
命令 | 用途 |
---|---|
select index | 选择数据库(redis.conf默认配置共16:0-15) |
keys pattern | 根据pattern(支持通配符?*)查找匹配的key |
type key | 查看数据类型 |
expire key seconds | 设置key的有效期 |
ttl key | 查看key的有效期 |
flushdb | 移除当前 数据库的所有key |
flushall | 移除所有 数据库的所有key |
0.2 示例
显示所有key
127.0.0.1:6379> keys *
1) "k6"
2) "k8"
3) "k12"
4) "k5"
5) "k1"
6) "k2"
7) "k9"
8) "k11"
9) "k7"
10) "k10"
11) "k4"
127.0.0.1:6379>
移除所有key
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
1 string
1.1 常用命令
命令 | 用途 |
---|---|
set key value | 设置一个key的value(string类型) |
get key | 获取一个key的value(string类型) |
append key value | 向一个string类型的key追加一个value |
strlen key | 获取key中存储的value的长度 |
del key [key ...] | 删除key |
incr key | key的integer类型的value+1 |
decr | key的integer类型的value-1 |
incrby key increment | key的integer类型的vaule+increment |
decrby key decrement | key的integer类型的vaule-decrement |
getrange key start end | 截取字符串 |
setrange key offset value | 从指定的位置覆盖字符串 |
setex key seconds value | 保存含有效期的key-value |
setnx key value | 设置key-value(仅当key不存在时) |
mset key value [key value ...] | 设置多个key-value |
mget key [key ...] | 查询多个key |
msetnx key value [key value ...] | 保存多个key-value(所有key均不存在才保存) |
1.2 示例
分别通过set、mset保存key-value(k1-k10)及get、mget获取key
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 4
OK
127.0.0.1:6379> set k5 5
OK
127.0.0.1:6379> set k6 6
OK
127.0.0.1:6379> set k7 abcde
OK
127.0.0.1:6379> set k8 edcba
OK
127.0.0.1:6379> mset k9 v9 k10 v10
OK
127.0.0.1:6379> keys *
1) "k6"
2) "k8"
3) "k5"
4) "k3"
5) "k1"
6) "k2"
7) "k9"
8) "k7"
9) "k10"
10) "k4"
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k2 k3 k4 k5 k6 k7 k8 k9 k10
1) "v2"
2) "v3"
3) "4"
4) "5"
5) "6"
6) "abcde"
7) "edcba"
8) "v9"
9) "v10"
127.0.0.1:6379>
使用append追加一个value到key
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> append k1 v1v1
(integer) 6
127.0.0.1:6379> get k1
"v1v1v1"
127.0.0.1:6379>
使用strlen获取key中value的长度
127.0.0.1:6379> strlen k1
(integer) 6
删除key
127.0.0.1:6379> mget k2 k3
1) "v2"
2) "v3"
127.0.0.1:6379> del k2 k3
(integer) 2
127.0.0.1:6379> keys *
1) "k6"
2) "k8"
3) "k5"
4) "k1"
5) "k9"
6) "k7"
7) "k10"
8) "k4"
127.0.0.1:6379>
incr使value+1
127.0.0.1:6379> incr k6
(integer) 7
decr使value-1
127.0.0.1:6379> decr k4
(integer) 3
incrby使value+给定值
127.0.0.1:6379> incrby k5 5
(integer) 10
decrby使value-给定值
127.0.0.1:6379> decrby k5 9
(integer) 1
getrange截取字符串
127.0.0.1:6379> get k7
"abcde"
127.0.0.1:6379> getrange k7 0 3
"abcd"
setrange从指定的位置覆盖字符串
127.0.0.1:6379> get k7
"abcde"
127.0.0.1:6379> setrange k7 2 xyzopq
(integer) 8
127.0.0.1:6379> get k7
"abxyzopq"
setex设置含有效期的key-value
127.0.0.1:6379> setex k11 20 value
OK
127.0.0.1:6379> ttl k11
(integer) 17
127.0.0.1:6379> ttl k11
(integer) 14
127.0.0.1:6379> ttl k11
(integer) 10
127.0.0.1:6379> ttl k11
(integer) 5
127.0.0.1:6379> ttl k11
(integer) 1
127.0.0.1:6379> ttl k11
(integer) -2
127.0.0.1:6379> get k11
(nil)
127.0.0.1:6379>
setnx保存key-value(若key已存在,不保存)
127.0.0.1:6379> get k1
"v1v1v1"
127.0.0.1:6379> get k2
(nil)
127.0.0.1:6379> setnx k1 xyz
(integer) 0
127.0.0.1:6379> setnx k2 abc
(integer) 1
127.0.0.1:6379> get k2
"abc"
127.0.0.1:6379>
msetnx保存多个key-value(所有key均不存在才保存)
127.0.0.1:6379> msetnx k11 v11 k12 v12 k10 v10
(integer) 0
127.0.0.1:6379> msetnx k11 v11 k12 v12
(integer) 1
127.0.0.1:6379> mget k11 k12
1) "v11"
2) "v12"
127.0.0.1:6379>
1.3 帮助信息
help @string命令查看string
类型的所有用法。帮助信息里面都是非常通俗的英文描述,不难看懂,其它数据类型不再照抄redis的帮助信息了,建议直接看自带的帮助,这是最权威的,英文直接能看懂的话,效果肯定比看其它资料好。
127.0.0.1:6379> help @string
APPEND key value
summary: Append a value to a key
since: 2.0.0
...省略1000字...
GET key
summary: Get the value of a key
since: 1.0.0
...省略10,000字...
SETEX key seconds value
summary: Set the value and expiration of a key
since: 2.0.0
SETNX key value
summary: Set the value of a key, only if the key does not exist
since: 1.0.0
SETRANGE key offset value
summary: Overwrite part of a string at key starting at the specified offset
since: 2.2.0
STRLEN key
summary: Get the length of the value stored in a key
since: 2.2.0
127.0.0.1:6379>
2 hash
2.1 常用命令
命令 | 用途 |
---|---|
hset key field value | 保存一个field到hash |
hget key field | 获取hash的一个field值 |
hmset key field value [field value ...] | 保存多个field到hash |
hmget key field [field ...] | 获取hash的多个field值 |
hgetall key | 获取hash的所有field(name & value) |
hdel key field [field ...] | 删除hash的field |
hlen key | 获取hash中field的数量 |
hexists key field | 判断hash中是否存在给定的field |
hkeys key | 获取给定hash中的所有field(仅name) |
hvals key | 获取给定hash中所有field的值(仅value) |
hincrby key field increment | hash中指定的field+increment(integer) |
hincrbyfloat key field increment | hash中指定的field+increment(float) |
2.2 示例
hset保存一个field到hash
127.0.0.1:6379> hset h f1 v1
(integer) 1
hget获取hash的指定field
127.0.0.1:6379> hget h f1
"v1"
hmset保存多个field到hash
127.0.0.1:6379> hmset h f2 2 f3 3 f4 4
OK
hmget获取hash的多个field
127.0.0.1:6379> hmget h f1 f2 f3 f4 f5
1) "v1"
2) "2"
3) "3"
4) "4"
5) (nil)
hgetall获取hash的所有filed(包括name和value)
127.0.0.1:6379> hgetall h
1) "f1"
2) "v1"
3) "f2"
4) "2"
5) "f3"
6) "3"
7) "f4"
8) "4"
hdel删除hash的指定field
127.0.0.1:6379> hdel h f1
(integer) 1
hlen获取hash中field数量
127.0.0.1:6379> hlen h
(integer) 3
hexists判断hash中是否存在指定的field
127.0.0.1:6379> hexists h f1
(integer) 0
127.0.0.1:6379> hexists h f2
(integer) 1
hkeys获取hash中的所有field(仅name)
127.0.0.1:6379> hkeys h
- "f2"
- "f3"
- "f4"
hvals获取hash中所有field的value
127.0.0.1:6379> hvals h
1) "2"
2) "3"
3) "4"
hincrby使hash中指定的field+给定的值(integer)
127.0.0.1:6379> hincrby h f2 5
(integer) 7
hincrbyfloat使hash中指定的field+给定的值(float)
127.0.0.1:6379> hincrbyfloat h f2 5.5
"12.5"
3 list
3.1 常用命令
命令 | 用途 |
---|---|
lpush key value [value ...] | 保存一个或多个value到list(向前追加) |
rpush key value [value ...] | 保存一个或多个value到list(向后追加) |
lrange key start stop | 从list中获取一个范围的元素 |
lpop key | 移除list中的第一个元素 |
rpop key | 一处list中的最后一个元素 |
lindex key index | 通过索引获取list中的元素 |
llen key | 获取list的长度 |
lrem key count value | 从list中移除count个value |
ltrim key start stop | 按指定的范围截取list |
rpoplpush key key | 从list中移除最后一个元素,并将该元素lpush到另一个list |
lset key index | 通过索引设置list中的元素 |
3.2 示例
lpush、rpush、lrange
127.0.0.1:6379> lpush l a b c
(integer) 3
127.0.0.1:6379> lrange l 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> rpush l x y z
(integer) 6
127.0.0.1:6379> lrange l 0 -1
1) "c"
2) "b"
3) "a"
4) "x"
5) "y"
6) "z"
127.0.0.1:6379>
lpop
127.0.0.1:6379> lpop l
"c"
127.0.0.1:6379> lrange l 0 -1
1) "b"
2) "a"
3) "x"
4) "y"
5) "z"
127.0.0.1:6379>
rpop
127.0.0.1:6379> rpop l
"z"
127.0.0.1:6379> lrange l 0 -1
1) "b"
2) "a"
3) "x"
4) "y"
127.0.0.1:6379>
lindex通过索引获取list中的元素
127.0.0.1:6379> lindex l 0
"b"
127.0.0.1:6379>
llen获取list长度
127.0.0.1:6379> llen l
(integer) 4
127.0.0.1:6379>
lrem从list中移除count个指定的value
127.0.0.1:6379> lrange l2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "1"
7) "2"
8) "3"
9) "4"
10) "5"
11) "1"
12) "2"
13) "3"
14) "4"
15) "5"
127.0.0.1:6379> lrem l2 2 5
(integer) 2
127.0.0.1:6379> lrange l2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "1"
6) "2"
7) "3"
8) "4"
9) "1"
10) "2"
11) "3"
12) "4"
13) "5"
127.0.0.1:6379>
ltrim按指定的范围截取list
127.0.0.1:6379> ltrim l2 0 3
OK
127.0.0.1:6379> lrange l2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379>
rpoplpush从list移除最后一个元素,并将该元素添加到另一个list的左边
127.0.0.1:6379> rpoplpush l l2
"y"
127.0.0.1:6379> lrange l2 0 -1
1) "y"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379>
lset通过索引设置list的元素
127.0.0.1:6379> lset l2 0 0
OK
127.0.0.1:6379> lrange l2 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379>
4 set
4.1 常用命令
命令 | 用途 |
---|---|
sadd key member [member ...] | 添加1个或多个member到set中 |
smembers key | 获取set中的所有member |
sismember key member | 判断给定的值是否时set中的member |
scard key | 获取set中member的数量 |
srem key member [member ...] | 从set中移除member |
srandmember key [count] | 从set中随机获取member |
smove key key member | 从set移动一个member到另一个set |
sdiff key [key ...] | 比较多个set的差异 |
sinter key [key ...] | 获取set的交集 |
sunion key [key ...] | 获取set的并集 |
4.2 示例
sadd 添加1个或多个member到set中
127.0.0.1:6379> sadd s1 a b c d e f
(integer) 6
smembers 获取set中的所有member
127.0.0.1:6379> smembers s1
1) "c"
2) "a"
3) "b"
4) "f"
5) "d"
6) "e"
sismember 判断给定的值是否时set中的member
127.0.0.1:6379> sismember s1 a
(integer) 1
127.0.0.1:6379> sismember s1 x
(integer) 0
scard 获取set中member的数量
127.0.0.1:6379> scard s1
(integer) 6
srem 从set中移除member
127.0.0.1:6379> srem s1 e f
(integer) 2
127.0.0.1:6379> smembers s1
1) "a"
2) "c"
3) "d"
4) "b"
srandmember 从set中随机获取member
127.0.0.1:6379> srandmember s1 2
1) "a"
2) "b"
127.0.0.1:6379> srandmember s1 2
1) "c"
2) "a"
127.0.0.1:6379> srandmember s1 2
1) "c"
2) "b"
smove 从set移动一个member到另一个set
127.0.0.1:6379> sadd s2 1 2 3
(integer) 3
127.0.0.1:6379> smove s1 s2 d
(integer) 1
127.0.0.1:6379> smembers s2
1) "d"
2) "3"
3) "1"
4) "2"
sdiff 比较多个set的差异
127.0.0.1:6379> sadd s3 1 2
(integer) 2
127.0.0.1:6379> sdiff s2 s3
1) "3"
2) "d"
sinter 获取set的交集
127.0.0.1:6379> sinter s2 s3
1) "1"
2) "2"
sunion 获取set的并集
127.0.0.1:6379> sunion s1 s2
1) "b"
2) "3"
3) "a"
4) "c"
5) "d"
6) "1"
7) "2"
5 zset(sorted_set)
sorted_set
类似于set,只是在set的基础上对每个member增加了一个score(double类型)值,并按照此score排序
5.1 常用命令
命令 | 用途 |
---|---|
zadd key socre member [socre member ...] | 添加member到sorted set,如果member已存在则更新它的socre |
zrange key start stop [withscores] | 从sorted set获取指定索引范围的member,按从小到大的顺序 |
zrevrange key start stop [withscores] | 从sorted set获取指定索引范围的member,按从大到小的顺序 |
zrangebyscore key min max [withscores] [limit offset count] | 从sorted set获取指定score范围的member |
zcount key min max | 获取指定score范围内的member数量 |
zrank key member | 确定member在sorted set中的索引(从小到大) |
zrevrank key member | 确定member在sorted set中的索引(从大到小) |
zscore key member | 从sorted set中获取给定member的score |
5.2 示例
zadd 添加member到sorted set,如果member已存在则更新它的socre
127.0.0.1:6379> zadd z1 10 aa 20 bb 30 cc 40 dd 50 ee 60 ff
(integer) 6
127.0.0.1:6379> zadd z1 70 gg 15 bb
(integer) 1
127.0.0.1:6379>
zrange 从sorted set获取指定索引范围的member,按从小到大的顺序
127.0.0.1:6379> zrange z1 0 2
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379>
zrevrange 从sorted set获取指定索引范围的member,按从大到小的顺序
127.0.0.1:6379> zrevrange z1 0 2
1) "gg"
2) "ff"
3) "ee"
127.0.0.1:6379>
zrangebyscore 从sorted set获取指定score范围的member
如果不包含给定的score,需要使用(
127.0.0.1:6379> zrangebyscore z1 10 30
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379> zrangebyscore z1 10 (30
1) "aa"
2) "bb"
127.0.0.1:6379> zrangebyscore z1 (10 30
1) "bb"
2) "cc"
127.0.0.1:6379> zrangebyscore z1 (10 (30
1) "bb"
127.0.0.1:6379>
zcount 获取指定score范围内的member数量
如果不包含给定的score,需要使用(
127.0.0.1:6379> zcount z1 10 30
(integer) 3
127.0.0.1:6379> zcount z1 10 (30
(integer) 2
127.0.0.1:6379> zcount z1 (10 30
(integer) 2
127.0.0.1:6379> zcount z1 (10 (30
(integer) 1
127.0.0.1:6379>
zrank 确定member在sorted set中的索引(从小到大)
127.0.0.1:6379> zrank z1 cc
(integer) 2
127.0.0.1:6379>
zrevrank 确定member在sorted set中的索引(从大到小)
127.0.0.1:6379> zrevrank z1 cc
(integer) 4
127.0.0.1:6379>
zscore 从sorted set中获取给定member的score
127.0.0.1:6379> zscore z1 bb
"15"
127.0.0.1:6379>
Redis-02.数据类型的更多相关文章
- Redis之Redis的数据类型
1.Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及ZSet(有序集合) 2.String(字符串) ...
- Redis常用数据类型介绍、使用场景及其操作命令
Redis常用数据类型介绍.使用场景及其操作命令 本文章同时也在cpper.info发布. Redis目前支持5种数据类型,分别是: 1.String(字符串) 2.List(列表) 3.Hash(字 ...
- Redis笔记(三)Redis的数据类型
前面说过,Redis的一大特性是支持丰富的数据类型, 这为更多的应用场景提供了可能. Redis有五种数据类型,包括string,list,set,sorted set和hash,注意,Redis的数 ...
- Redis常用数据类型
Redis常用数据类型 转载自:http://blog.sina.com.cn/s/blog_7f37ddde0101021q.html Redis最为常用的数据类型主要有以下五种: ●Str ...
- Redis基本数据类型
-------------------Redis基本数据类型------------------- 1.String 字符串 1.概念 1.String 是redis最基本的类 ...
- Redis常用数据类型和事物以及并发
Redis数据类型 基本类型(String int): 如 set key value .get key 等 所有命令都是按照 key value keys * 可以将全部数据列出,其中后面的 &qu ...
- Redis五大数据类型的常用操作
在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...
- redis的数据类型及使用
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
- Redis系列(二):Redis的数据类型及命令操作
原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...
- 一、Redis的数据类型
一Redis的数据类型 string:字符串 hash:哈希 list:列表 set:集合 zset:有序集合(sorted set) 1.string(字符串) redis最基本的类型.可以理解成与 ...
随机推荐
- html(),text(),var()区别与用法
text() 设置或返回所选元素的文本内容 html() 设置或返回所选元素的内容(包括HTML标记) val() 设置或返回表单字段的值 用html()效果把html标签也获取出来了: 用val() ...
- 开发模型之V模型
1.模型目的: V模型的目的在于改进软件开发的效率和效果. 2.常见理论性描述: V模型从整体上看起来,就是一个V字型的结构,由左右两边组成. 左边的下划线分别代表了需求分析.概要设计.详细设计.编 ...
- python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter
最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...
- ASP.NET Core 添加NLog日志支持(VS2015update3&VS2017)
1.创建一个新的ASP.NET Core项目 2.添加项目依赖 NLog.Web.AspNetCore 3.在项目目录下添加nlog.config文件: <?xml version=" ...
- linux中du与df的区别和联系
1,两者区别 du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df, ...
- dotnet 在build restore publish 的时候不显示警告
dotnet restore -nowarn:msb3202,nu1503,cs1591 dotnet build -nowarn:msb3202,nu1503,cs1591 --no-restore ...
- AX_CreateAndPostInventJournal
static void CreateAndPostInventJournal(Args _args) { InventJournalTable inventJournalTableLocal; Inv ...
- 配置了yum本地源
测试机不能联网 所以不能直接安装软件 只能配置本地源 1. 在联网的电脑上下载与Linux内核版本相同的镜像 2. 把此安装镜像放在此Linux测试机上 比如放在家目录下 /home/ ...
- 【Selenium】【BugList10】smtp发送邮件问题汇总:550/535/554
[场景] 通过126邮箱向QQ邮箱发送HTML格式邮件 [代码1] from email.mime.text import MIMEText from email.header import Head ...
- CODEFORCES ROUND #761 ANALYSES BY TEAM:RED & BLACK
A. Dasha and Stairs Problems: 一个按照1,2,3……编号的楼梯,给定踩过的编号为奇数奇数和偶数的楼梯数量a和b,问是否可以有区间[l, r]符合奇数编号有a个,偶数编号有 ...