Redis 数据类型

Redis通常被称为数据结构服务器,因为值(value)可以是

字符串(String),

哈希(Map),

列表(list),

集合(sets)

有序集合(sorted sets)

1 String(字符串)

Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的

示例:

redis 127.0.0.1:6379> SET name kevin    (set  key  value结构)

OK

redis 127.0.0.1:6379> GET name

"kevin"

incr

让当前键值以 1 的数量递增,并返回递增后的值(key对应的value是整数),基于这个特性,在分布式系统中,使用其生成id使用

incrby

可以指定参数一次增加的数值,并返回递增后的值

decr

让当前键值以 1 的数量递减 并返回递减后的值

decrby

可以指定参数一次递减的数值,并返回递减后的值 incrbyfloat 可以递增一个双精度浮点数

append(类似于stringbuffer)

作用是向键值的末尾追加 value。如果键不存在则将该键的值设置为 value。返回值是追加后字符串的总长度。

mget/mset

作用与 get/set 相似,不过 mget/mset 可以同时获得/设置多个键的键值

del

根据 key 来删除 value

keys *

显示当前redis中所有的key

Hash(hash 哈希)

Redis 的哈希是键值对的集合。 Redis 的哈希值是字符串字段和字符串值之间的映射,因此它们被用来表示对象

 

示例:

redis 127.0.0.1:6379> HSET key field value

OK

redis 127.0.0.1:6379> HGET key field

value

hset 存储一个哈希键值对的集合

        hset key field value

hget 获取一个哈希键的值

        hget key field

hmset 存储一个或多个哈希是键值对的集合

        hmset key field1 value1 ......fieldN keyN

hmget 获取多个指定的键的值

        hmget key field1 ... fieldN

案例:

127.0.0.1:6379> hset person name xiaoming

(integer) 1

127.0.0.1:6379> hget person name

"xiaoming"

127.0.0.1:6379> hset person age 18

(integer) 1

127.0.0.1:6379> hget person age

"18"

127.0.0.1:6379> hmset student class 101 no 1002

OK

127.0.0.1:6379> hmget student class no

1) "101"

2) "1002"

127.0.0.1:6379> hmget student

(error) ERR wrong number of arguments for 'hmget' command

127.0.0.1:6379>

hexists 判断哈希表中的字段名是否存在 如果存在返回 1 否则返回 0

        hexists key field

案例:

127.0.0.1:6379> hexists student class

(integer) 1

127.0.0.1:6379> hexists student name

(integer) 0

hdel 删除一个或多个字段

        hdel key field

案例:

127.0.0.1:6379> hdel student class

(integer) 1

127.0.0.1:6379> hdel student class

(integer) 0

127.0.0.1:6379> hget student class

(nil)

127.0.0.1:6379> hget student no

"1002"

127.0.0.1:6379>

hgetall 获取一个哈希是键值对的集合

        hgetall key

案例:

127.0.0.1:6379> hkeys student

1) "no"

2) "name"

3) "age"

hlen 返回 key 的 hash 的元素(键值对)个数

        hlen key

案例:

127.0.0.1:6379> hlens student 错误

(error) ERR unknown command 'hlens'

127.0.0.1:6379> hlen student

(integer) 3

 3 List(链表):先进先出原则

 

Redis 的链表是简单的字符串列表,排序插入顺序。您可以添加元素到 Redis 的列表的头部或尾部(可以理解为java中linkedlist)

使用场景:队列的特点:FIFO(先进的先出)

 

lpush key value 向链表左侧添加

rpush key value 向链表右侧添加

lrange key index1 index2  遍历链表:取index1到index2之间的元素

lrange c 0 -1  遍历整个c键中的元素-1代表索引最后一个

案例:

127.0.0.1:6379> lpush my a

(integer) 1

127.0.0.1:6379> lpush my b

(integer) 2

127.0.0.1:6379> lpush my c

(integer) 3

127.0.0.1:6379> lrange my 0 10

1) "c"

2) "b"

3) "a"

127.0.0.1:6379> lrange my 0 -1

1) "c"

2) "b"

3) "a"

127.0.0.1:6379> rpush my e

(integer) 4

127.0.0.1:6379> rpush my f

(integer) 5

127.0.0.1:6379> rpush my j

(integer) 6

127.0.0.1:6379> lrange my 0 -1

1) "c"

2) "b"

3) "a"

4) "e"

5) "f"

6) "j"

127.0.0.1:6379> lrange my 0 5

1) "c"

2) "b"

3) "a"

4) "e"

5) "f"

6) "j"

//取出值并移除lpop ,rpop

127.0.0.1:6379> lpop my

"c"

127.0.0.1:6379> lpop my

"b"

127.0.0.1:6379> lrange my 0 -1

1) "a"

2) "e"

3) "f"

4) "j"

127.0.0.1:6379> rpop my

"j"

127.0.0.1:6379>

127.0.0.1:6379> rpop my

"3"

127.0.0.1:6379> rpop my

"2"

127.0.0.1:6379> lrange my 0 -1

1) "b"

2) "a"

3) "1"

4) "2"

 

 

 

 

 

 

 

 

 

 

 

lpop从链表的左边取数据,并且移除

rpop从链表的右边取数据,并且移除

lindex key indexnumber (从key值下标取出)如果要将链表类型当做数组来用,lindex 命令是必不可少的。

等同于数据中的Object get(int index)

lindex 命令用来返回指定索引的元素,索引从 0 开始

如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。

类似于java中list.get(index)

4 Set(集合)Redis 的集合是字符串的无序集合。

sadd key value 添加一个 string 元素到,key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0

scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回0

smembers key 返回 key 对应 set 的所有元素,结果是无序的(遍历set集合)

sismember key value 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存在

srem key value 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存在或者 key 不存在返回 0

案例:

127.0.0.1:6379> sadd sore a

(integer) 1

127.0.0.1:6379> sadd sore 2

(integer) 1

127.0.0.1:6379> sadd sore 5

(integer) 1

127.0.0.1:6379> sadd sore 5

(integer) 0

127.0.0.1:6379> sadd sore a

(integer) 0

127.0.0.1:6379> scard sore

(integer) 3

127.0.0.1:6379> sadd sore yu

(integer) 1

127.0.0.1:6379> scard sore

(integer) 4

127.0.0.1:6379> smembers sore

1) "a"

2) "5"

3) "2"

4) "yu"

127.0.0.1:6379> sismember sore a

(integer) 1

127.0.0.1:6379> sismember sore 4

(integer) 0

127.0.0.1:6379> srem sore 5

(integer) 1

127.0.0.1:6379> smembers sore

1) "a"

2) "2"

3) "yu"

127.0.0.1:6379> srem sore xiaoli

(integer) 1

 5 SortedSet(有序集合)zset

Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。类似于java中LinkedHashSet

zadd key score value 将一个或多个 value 及其 score(索引)加入到 set 中:

先按score(分值,可以看做是索引,但是这个索引重复)排序,如果都为0,则按存入数据的字典顺序排序

遍历:zrange key start end: 0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令相似)

案例:

127.0.0.1:6379> zadd me 0 a

(integer) 1

127.0.0.1:6379> zadd me 2 b

(integer) 1

127.0.0.1:6379> zadd me 4 c

(integer) 1

127.0.0.1:6379> zrange me 0 -1

1) "a"

2) "b"

3) "c"

127.0.0.1:6379> zget me 0

(error) ERR unknown command 'zget'

127.0.0.1:6379> zadd me 1 e

(integer) 1

127.0.0.1:6379> zrange me 0 -1

1) "a"

2) "e"

3) "b"

4) "c"

127.0.0.1:6379> zadd me 3 f

(integer) 1

127.0.0.1:6379> zrange me 0 -1

1) "a"

2) "e"

3) "b"

4) "f"

5) "c"

zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 withscores 参数  

案例:

127.0.0.1:6379> zrange me 0 -1 withscores

 1) "a"

 2) "0"

 3) "e"

 4) "1"

 5) "b"

 6) "2"

 7) "f"

 8) "3"

 9) "c"

10) "4"

zremrangebyscore key start end 可用于指定范围的删除操作

把指定分值上的value删除,如果有相同分值的都会被删除

案例:

127.0.0.1:6379> zrange me 0 -1

1) "a"

2) "e"

3) "b"

4) "f"

5) "c"

127.0.0.1:6379> zremrangebyscore me 0 1

(integer) 2

127.0.0.1:6379> zrange me 0 -1

1) "b"

2) "f"

3) "c"

 zset中排序由分值(索引)来维护,但是相同的分值(索引)时会按字典顺序排列

6Redis 中的其他命令

echo value 测试 redis 是否链接 如果已链接返回 echo 命令后给定的值 (相当于回音)

与ping-->PONG一样的意思

expire key time(s) 设置一个 key 的过期时间 单位秒。时间到达后会删除 key value(使用场景:美团APP,电影票订单下单时候没有来得及支付,自动取消这个订单)

ttl key 查询已设置过期时间的 key 的剩余时间 如果返回-2 表示该键值对已经过期被删除

type key 查询key的数据类型

persist 移除给定 key 的过期时间

select dbindex 选择数据库(0-15)redis内默认有16个库,默认使用0库(select 1)

move key dbIndex  将当前数据库中的 key 转移到其他数据库中 (相当于是剪切)

dbsize 返回当前数据库中的 key 的数目 info 获取服务器的信息和统计

flushdb  删除当前库中的所有的key

flushall 删除所有16个数据库中的所有 key

quit 退出redis客户端与redis服务器的连接

./redis-cli shutdown 停止redis

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值