首页 > 数据库 >Redis的数据类型详解

Redis的数据类型详解

时间:2022-10-25 10:04:19浏览次数:44  
标签:127.0 0.1 数据类型 Redis 6379 list 详解 key integer


作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g OCP/OCM、
Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验


擅长Oracle数据库运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

Redis的数据类型详解_hash表

文章目录

1. Redis 键(key)

序号  命令及描述
1 DEL key该命令用于在 key 存在时删除 key。
2 DUMP key序列化给定 key ,并返回被序列化的值。
3 EXISTS key检查给定 key 是否存在。
4 EXPIRE key seconds为给定 key 设置过期时间,以秒计。
5 PEXPIRE key milliseconds设置 key 的过期时间以毫秒计。
6 KEYS pattern查找所有符合给定模式( pattern)的 key 。
7 MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中。
8 PERSIST key移除 key 的过期时间,key 将持久保持。
9 PTTL key以毫秒为单位返回 key 的剩余的过期时间。
10 TTL key以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
13 RANDOMKEY从当前数据库中随机返回一个 key 。
11 RENAME key newkey修改 key 的名称
12 RENAMENX key newkey仅当 newkey 不存在时,将 key 改名为 newkey 。
13 SCAN cursor [MATCH pattern] [COUNT count]迭代数据库中的数据库键。
14 TYPE key返回 key 所储存的值的类型。

#判断是否存在
exists name
#超时过期,单位是秒
expire name 10
#查看过期时间
ttl name
#移除当前的key
move name 1
#查看当前key的类型
type

2 String

#追加字符串,没有的话就新建
append name "jeames"
#字符串长度
strlen name
#i++
set count 0
incr count
#i--
decr count
#指定增量 count = count + 10
incrby count 10
#指定减量 count = count - 10
decrby count 10
#截取字符串 wangqin
getrange key 0 3
"wang"
#替换
setrange key 1 qq
"wqqgqin"
#设置过期时间
setex key 30 "hello"
#不存在再设置,往往在分布式中使用,如果key1不存在就创建,存在就创建失败
setnx key1 "redis"
#批量设置
mset k1 v1 k2 v2 k3 v3
#批量获取
mget k1 k2
#要么一起成功,要么一起失败,保持原子性
msetnx k1 v1 k2 v2
#先获取在写入,不存在值为nil,存在的话获取原来的值在设置新的值

3.List

#将一个值或者多个值插入list的头部
127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
#查看list,头->尾
127.0.0.1:6379> lrange list 0 -1
2.3 Set
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lrange list 0 1
1) "three"
2) "two"
127.0.0.1:6379> rpush list right
(integer) 4
#将一个值或者多个值插入list的尾部
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
#移除list第一个元素
127.0.0.1:6379> lpop list
"three"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
3) "right"
#移除list最后一个元素
127.0.0.1:6379> rpop list
"right"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
#根据下标获取值
127.0.0.1:6379> lindex list 0
#获取list长度
127.0.0.1:6379> llen list
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "two"
4) "one"
#从上至下删除一个 two
127.0.0.1:6379> lrem list 1 two
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379>

4.Set

#添加Set元素
127.0.0.1:6379> sadd myset v1 v2 v3 v4
(integer) 4
#显示所有myset集合中的元素
127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v4"
4) "v2"

#查询v1是否存在myset集合中,存在就返回1,不存在就返回0
127.0.0.1:6379> sismember myset v1
(integer) 1
127.0.0.1:6379> sismember myset v6
(integer) 0
127.0.0.1:6379> sadd uset k1 k2 k3 v1
(integer) 4
#合并集合myset和uset到集合set中,set重复的取一个就行
127.0.0.1:6379> sunionstore set myset uset
(integer) 7
#合并显示集合myset和uset
127.0.0.1:6379> sunion myset uset
1) "v1"
2) "v3"
3) "k1"
4) "k3"
5) "v4"
6) "k2"
7) "v2"
#set集合的长度
127.0.0.1:6379> scard set
(integer) 6
#随机删除set中的元素
127.0.0.1:6379> spop set
"v4"
#移动指定的一个值到其他的集合中set->myset
127.0.0.1:6379> smove set myset k1
#两个集合的差集
127.0.0.1:6379> smembers set
1) "v3"
2) "k3"
3) "k2"
4) "v2"
127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v4"
4) "v2"
5) "k1"
127.0.0.1:6379> sdiff myset set
1) "v1"
2) "k1"
3) "v4"
#两个集合的交集
127.0.0.1:6379> sinter myset set
1) "v3"
2) "v2"
#两个集合的并集
127.0.0.1:6379> sunion myset set
1) "v1"
2) "v3"
3) "k1"
4) "k3"
5) "v4"
6) "k2"
7) "v2"

5.Hash(哈希)

#set一个具体的 key-value
127.0.0.1:6379> hset myhash name jeames
(integer) 1
#获取一个字段值
127.0.0.1:6379> hget myhash name
"wangqin"
#set一组 key-value
127.0.0.1:6379> hmset myhash name wangqin1 age 18
OK
#获取一组 key-value
127.0.0.1:6379> hmget myhash name age
1) "wangqin1"
2) "18"
#获取全部数据
127.0.0.1:6379> hgetall myhash
1) "name"
2) "wangqin1"
3) "age"
4) "18"
#删除指定的key
127.0.0.1:6379> hdel myhash name
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "age"
2) "18"
127.0.0.1:6379> hmset myhash name wangqin set male
OK
#获取hash表的字段数量
127.0.0.1:6379> hlen myhash
(integer) 3
#hash表中是否存在key
127.0.0.1:6379> hexists myhash name
(integer) 1
127.0.0.1:6379> hexists myhash name1
(integer) 0
#获取hash表的key
127.0.0.1:6379> hkeys myhash
1) "age"
2) "name"
3) "set"
#获取hash表的值
127.0.0.1:6379> hvals myhash
1) "18"
2) "wangqin"
3) "male"

6.Zset(有序集合)

#添加zset元素
127.0.0.1:6379> zadd zset 1 one
(integer) 1
#批量添加zset元素
127.0.0.1:6379> zadd zset 2 two 3 three
(integer) 2
#获取zset中所有元素
2.6 geospatital(地理位置)
127.0.0.1:6379> zrange zset 0 -1
1) "one"
2) "two"
3) "three"
#倒序查询
127.0.0.1:6379> zrevrange zset 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zadd zset -1 -one
(integer) 1
127.0.0.1:6379> zadd zset -2 -two
(integer) 1
#正序排序,从-∞到+∞
127.0.0.1:6379> zrangebyscore zset -inf +inf
1) "-two"
2) "-one"
3) "one"
4) "two"
5) "three"
127.0.0.1:6379> zrangebyscore zset -1 +inf
1) "-one"
2) "one"
3) "two"
4) "three"
#倒序排序,从+∞到-∞
127.0.0.1:6379> zrevrangebyscore zset +inf -1
1) "three"
2) "two"
3) "one"
4) "-one"
127.0.0.1:6379> zrem zset one
(integer) 1
127.0.0.1:6379> zrange zset 0 -1
1) "-two"
2) "-one"
3) "two"
4) "three"
#集合的长度
127.0.0.1:6379> zcard zset
(integer) 4


您的批评指正是我写作的最大动力!

❤️ 技术交流可以 关注公众号:IT邦德 ❤️


标签:127.0,0.1,数据类型,Redis,6379,list,详解,key,integer
From: https://blog.51cto.com/u_11682417/5794003

相关文章

  • 针对特殊数据类型JSON.parse()无法完整实现深拷贝的情况下的解决方法
    //判断数据类型functiontypeOf(obj){consttoString=Object.prototype.toStringconstmap={'[objectBoolean]':'boolean','[objectNumber]':'number','[o......
  • MySQL 5.7临时表空间如何玩才能不掉坑里详解
    转载自:https://www.jb51.net/article/147268.htmMySQL5.7临时表空间如何玩才能不掉坑里详解导读MySQL5.7的目标是成为发布以来最安全的MySQL服务器,其在SSL/TLS和全面......
  • Prometheus监控Redis
    redis-exporter监控Redis一、单节点监控#启动,密码带特殊字符时需要用\进行转义dockerrun-dit-p9121:9121-eREDIS_ADDR=IP:6379-eREDIS_PASSWORD=password--na......
  • 认识 Redis client-output-buffer-limit 参数与源码分析
    概述Redis的​​client-output-buffer-limit​​可以用来强制断开无法足够快从redis服务器端读取数据的客户端。保护机制规则如下:[hardlimit]大小限制,当某一客户端缓......
  • 2.4 RedisAPI之list
    1.简介字符串键值结构(keyvalue)特点有序可重复左右两边都可插入和删除2.命令从列表右端插入值rpushkeyvalue1value2......valueN时间复杂度为O(1~n)从列表左端插入值l......
  • 2.6 RedisAPI之zset
    1.简介字符串键值结构(keyscorevalue)特点有序不重复支持集合间操作2.命令向集合内添加元素,element不可以重复但score是可以重复的zaddkeyscoreelement时间复杂度为O(l......
  • 2.5 RedisAPI之set
    1.简介字符串键值结构(keyvalue)特点无序不重复支持集合间操作2.命令向集合内添加元素element,如果element已经存在则添加失败saddkeyelement时间复杂度为O(1)删除集合内......
  • 2.3 RedisAPI之hash
    1.简介字符串键值结构(keyfieldvalue)2.命令设置key对应的field的valuehsetkeyfieldvalue时间复杂度为O(1)获取key对应的field的valuehgetkeyfieldvalue时间复杂度......
  • 2.2 RedisAPI之string
    1.简介字符串键值结构(keyvalue)value的值小于512m,一般建议一个key-value的大小为100k使用场景缓存计数器分布式锁2.命令设置key-value不管key是否存在都设置setkeyvalue......
  • 2.1 RedisAPI之简介
    1.通用命令遍历所有keykeys*keys命令一般不在生产环境使用,主要原因是生产环境下通常有大量的key,列出所有key没有实际的意义并且会消耗很多内存资源。删除指定keydelkey计......