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. Python开发【第九篇】:协程、异步IO

    协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是协程,协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回 ...

  2. webpack简笔(1)

    1.npm init -> 生成package.json文件 2.npm install webpack --save-dev (不建议全局安装 ,会锁定版本) [ --save-dev 开发环 ...

  3. gem 安装问题

    错误提示: ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 ...

  4. 1.为什么使用spring boot

    最近2年spring cloud微服务比较流行,Spring Cloud基于SpringBoot,为微服务体系开发中的架构问题提供了一整套的解决方案, 本文总结一下为什么要使用Spring boot, ...

  5. Java多线程中static变量的使用

    轉:https://blog.csdn.net/yy304935305/article/details/52456771 鲁迅先生曾说过:“时间就像海绵里的水,只要愿挤,总还是有的”.不管肿(怎)么说 ...

  6. Web自动化附件上传

    在进行web界面自动化编写时,可以根据定位元素的方式进行编写,但是如果某一个功能涉及到有附件上传功能,那么该如何解决呢? 继续往下看>>>>> 场景:登录系统后,进行新增 ...

  7. mac sublime3 无法安装Package Control

    一.在线安装 1.打开sublime,Ctrl+` 打开控制台, 输入 import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedc ...

  8. NodeManager介绍

    原文链接: http://blog.csdn.net/zhangzhebjut/article/details/37730013 参考文档: https://blog.csdn.net/u013384 ...

  9. HTTP之请求消息Request

    客户端发送一个HTTP请求到服务器的请求消息包括以下格式: 请求行(request line).请求头部(header).空行和请求数据四个部分组成. 请求行以一个方法符号开头,以空格分开,后面跟着请 ...

  10. 南昌邀请赛I.Max answer 单调栈+线段树

    题目链接:https://nanti.jisuanke.com/t/38228 Alice has a magic array. She suggests that the value of a in ...