Redis中所有数据都是以key-value存储的,value支持的数据类型包括stringhashlistsetsorted_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

  1. "f2"
  2. "f3"
  3. "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.数据类型的更多相关文章

  1. Redis之Redis的数据类型

    ​1.Redis的数据类型     Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及ZSet(有序集合)  2.String(字符串)    ...

  2. Redis常用数据类型介绍、使用场景及其操作命令

    Redis常用数据类型介绍.使用场景及其操作命令 本文章同时也在cpper.info发布. Redis目前支持5种数据类型,分别是: 1.String(字符串) 2.List(列表) 3.Hash(字 ...

  3. Redis笔记(三)Redis的数据类型

    前面说过,Redis的一大特性是支持丰富的数据类型, 这为更多的应用场景提供了可能. Redis有五种数据类型,包括string,list,set,sorted set和hash,注意,Redis的数 ...

  4. Redis常用数据类型

    Redis常用数据类型 转载自:http://blog.sina.com.cn/s/blog_7f37ddde0101021q.html     Redis最为常用的数据类型主要有以下五种: ●Str ...

  5. Redis基本数据类型

    -------------------Redis基本数据类型------------------- 1.String 字符串     1.概念         1.String 是redis最基本的类 ...

  6. Redis常用数据类型和事物以及并发

    Redis数据类型 基本类型(String int): 如 set key value .get key 等 所有命令都是按照 key value keys * 可以将全部数据列出,其中后面的 &qu ...

  7. Redis五大数据类型的常用操作

    在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...

  8. redis的数据类型及使用

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  9. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  10. 一、Redis的数据类型

    一Redis的数据类型 string:字符串 hash:哈希 list:列表 set:集合 zset:有序集合(sorted set) 1.string(字符串) redis最基本的类型.可以理解成与 ...

随机推荐

  1. html(),text(),var()区别与用法

    text() 设置或返回所选元素的文本内容 html() 设置或返回所选元素的内容(包括HTML标记) val() 设置或返回表单字段的值 用html()效果把html标签也获取出来了: 用val() ...

  2. 开发模型之V模型

    1.模型目的: V模型的目的在于改进软件开发的效率和效果. 2.常见理论性描述:  V模型从整体上看起来,就是一个V字型的结构,由左右两边组成. 左边的下划线分别代表了需求分析.概要设计.详细设计.编 ...

  3. python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter

    最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...

  4. ASP.NET Core 添加NLog日志支持(VS2015update3&VS2017)

    1.创建一个新的ASP.NET Core项目 2.添加项目依赖 NLog.Web.AspNetCore 3.在项目目录下添加nlog.config文件: <?xml version=" ...

  5. linux中du与df的区别和联系

    1,两者区别 du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df, ...

  6. dotnet 在build restore publish 的时候不显示警告

    dotnet restore -nowarn:msb3202,nu1503,cs1591 dotnet build -nowarn:msb3202,nu1503,cs1591 --no-restore ...

  7. AX_CreateAndPostInventJournal

    static void CreateAndPostInventJournal(Args _args) { InventJournalTable inventJournalTableLocal; Inv ...

  8. 配置了yum本地源

    测试机不能联网  所以不能直接安装软件  只能配置本地源 1.   在联网的电脑上下载与Linux内核版本相同的镜像 2.   把此安装镜像放在此Linux测试机上  比如放在家目录下  /home/ ...

  9. 【Selenium】【BugList10】smtp发送邮件问题汇总:550/535/554

    [场景] 通过126邮箱向QQ邮箱发送HTML格式邮件 [代码1] from email.mime.text import MIMEText from email.header import Head ...

  10. CODEFORCES ROUND #761 ANALYSES BY TEAM:RED & BLACK

    A. Dasha and Stairs Problems: 一个按照1,2,3……编号的楼梯,给定踩过的编号为奇数奇数和偶数的楼梯数量a和b,问是否可以有区间[l, r]符合奇数编号有a个,偶数编号有 ...