Redis-2 数据类型

Redis 数据类型

官方命令大全网站:http://www.redis.cn/commands.html
linux:redis单机版安装参考:https://blog.csdn.net/qq_27242695/article/details/112173058
window:官网下载window版本

1 介绍

  • String(字符类型)
  • Hash(散列类型)
  • List(列表类型)
  • Set(集合类型)
  • SortedSet(有序集合类型,简称zset)
    注意:在 redis 中的命令语句中,命令是忽略大小写的,而 key 是不忽略大小写的。

2 数据类型

进入一下学习操作,建议安装单机版redis验证
安装推荐博客:

2.1 String(字符类型)

2.1 赋值
# 语法 set key value
127.0.0.1:6379> set redis redis
OK
2.2 取值
# 语法 get key
127.0.0.1:6379> get redis
"redis"
2.3 其他语法
  • 取值并赋值
GETSET key value
  • 数字增加
INCRBY key increment
  • 数字减少
DECRBY key increment

注意:
数字增加与减少存储的值必须是integer类型,increment表示增减基数。

  • 仅当不存在时赋值
setnx key value

2.2 Hash(散列类型)

hash 类型也叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等
其它类型。结构可以参考如下

在这里插入图片描述
命令赋值
HSET 命令不区分插入和更新操作,当执行插入操作时 HSET 命令返回 1 ,当执行更新操作时返回 0 。

2.2.1 设置一个字段值
# 语法 HSET key field value
127.0.0.1:6379> hset user name lin
(integer) 1
2.2.2 设置多个字段值
# 语法 HMSET key field value [field value ...]
127.0.0.1:6379> hmset user name lin age 12 sex man
OK
2.2.3 当字段不存在时赋值
# 语法 HSETNX key field value
127.0.0.1:6379> hsetnx user age 30 # 如果user中没有age字段则设置age值为30,否则不做任何操作
(integer) 0
2.2.4 获取一个字段值
# 语法 HGET key field
127.0.0.1:6379> hget user age
"12"
2.2.5 获取多个字段
# 语法 HMGET key field [field ...]
127.0.0.1:6379> hmget user age sex
1) "12"
2) "man"
2.5.6 获取所有字段
# 语法 HGETALL key
127.0.0.1:6379> hgetall user
1) "name"
2) "lin"
3) "age"
4) "12"
5) "sex"
6) "man"
2.5.7 删除字段
 HDEL key field [field ...]

2.3 List(列表类型)

Redis 的列表类型( list 类型)可以 存储一个有序的字符串列表 ,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。列表类型内部是使用双向链表( double linked list )实现的,所以向列表两端添加元素的时间复杂度为0(1) ,获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

2.3.1 命令
  • LPUSH key value [value …]
    往链表左边塞值
  • RPUSH key value [value …]
    往链表右边塞值
  • LRANGE key start stop
    获取列表中的某一片段。将返回startstop之间的所有元素(包含两端的元素),索引从0开始。索引可以
    是负数,如:“-1”代表最后边的一个元素。
  • 操作
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> rpush list1 1 2 3 4 5
(integer) 10
127.0.0.1:6379> lrange list1 0 -1
 1) "5"
 2) "4"
 3) "3"
 4) "2"
 5) "1"
 6) "1"
 7) "2"
 8) "3"
 9) "4"
10) "5"
2.3.2 LPOP/RPOP/LLEN
  • lpop key
    弹出列表最左边的值

  • rpop key
    弹出列表最右边的值

  • llen key
    获取列表中元素的个数

根据list的数据特性,可用作于消息队列等场景设计。

2.3 Set(集合类型)

集合类型,其中的数据是不重复且没有顺序

  • 集合类型与列表类型差异
结合类型列表类型
存储类型2^32 - 12^32 - 1
有序性无序有序
唯一性

集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型的 Redis 内部是使用值为空的散列表实现,所有这些操作的时间复杂度都为 0(1) 。
Redis 还提供了多个集合之间的交集、并集、差集的运算。

2.3.1 SADD/SREM(添加/删除)
  • SADD key member [member …]
    添加元素
  • SREM key member [member …]
    删除元素
127.0.0.1:6379> sadd set 1 2 3
(integer) 3
127.0.0.1:6379> srem set 1
(integer) 1
2.3.2 SMEMBERS(获取集合中所有元素)
  • SMEMBERS key
    获取集合中所有元素
  • SISMEMBER key member
    判断元素是否在集合中
  • 演示操作
127.0.0.1:6379> smembers set
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> sismember set 1
(integer) 0
127.0.0.1:6379> sismember set 2
(integer) 1
2.3.3 其他
  • SINTER key [key …]
    集合的交集运算
  • SUNION key [key …]
    集合的并集运算

2.4 Zset(有序集合类型)

2.4.1 介绍

在 set 集合类型的基础上,有序集合类型为集合中的每个元素都 关联一个分数 ,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。

  • 有序集合与列表类型的相似点:
  1. 二者都是有序的。
  2. 二者都可以获得某一范围的元素。
  • 有序集合与列表类型的异同点:
  1. 列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。
  2. 有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。
  3. 列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现)
  4. 有序集合要比列表类型更耗内存。
2.4.2 新增-ZADD
ZADD key score member [score member ...]

向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到
集合中的元素个数,不包含之前已经存在的元素。

2.4.3 获取-ZRANGE/ZREVRANGE
# 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
ZRANGE key start stop [WITHSCORES]
# 按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
ZREVRANGE key start stop [WITHSCORES]

注意: 如果需要获得元素的分数的可以在命令尾部加上 WITHSCORES 参数

2.4.4 获取元素的分数-ZSCORE
ZSCORE key member
2.4.5 删除元素-ZREM

删除元素。移除有序集合key中的一个或多个成员,不存在的成员将被忽略。
当key存在但不是有序集类型时,返回一个错误。

ZREM key member [member ...]
2.4.6 其他指令
  • 获得指定分数范围的元素
 ZRANGEBYSCORE key min max [WITHSCORES]
  • 增加某个元素的分数
# increment 增加的分数值
ZINCRBY key increment member
  • 获得集合中元素的数量
ZCARD key

3 通用命令

3.1 del

删除

DEL key

3.2 exists

确认一个key 是否存在

exists key

3.3 expire(重要)

Redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。

# 设置key的生存时间(单位:秒)key在多少秒后会自动删除
EXPIRE key seconds
# 查看key生于的生存时间
TTL key
# 清除生存时间
PERSIST key
# 生存时间设置单位为:毫秒
PEXPIRE key milliseconds

3.4 rename-重命名

# 重命名key
rename oldkey newkey

3.5 type

显示指定key的数据类型

type key

3.6 删除所有key指令

//删除当前数据库中的所有Key
flushdb
//删除所有数据库中的key
flushall
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值