Redis-数据类型与常用命令
Redis-数据类型与常用命令
- 一、Redis数据类型(Value)
- 1. 字符串Strings
- 2. 列表Lists
- 3. 哈希hashes
- 4. 集合Sets
- 5. 有序集合Zset => 场景:需要排序
- 二、常用命令
- 1. 查看帮助
- 2. 查看数据中的所有key
- 3. 查看key数据类型
- 4. 删除指定key
- 5. 查看key的过期时间
- 6. 选择数据库
- 7. 移动key
- 8. 查看有多少个数据
- 9. 清空数据库
一、Redis数据类型(Value)
key一般字符串
1. 字符串Strings
strings被认为是二进制安全的,它可以包含任何类型的数据,如图片或序列化对象。
一个strings类型最大可以是512M
2. 列表Lists
列表类似python列表(有序对象),可以对lists的最左边和最右边进行插入和取出操作
[1,2,3,4,5] pop移除,push插入
一般用在队列(先进先出),栈(先进后出)等场景中
3. 哈希hashes
类似python字典key-value
api => json => 存入到redis中 => hashes
每个哈希对象可以存储40多亿键值对
4. 集合Sets
集合不包含重复值,可以并集、交集、差集…
Sets对象是通过哈希表实现的,复杂度O(1)
每个集合对象可以存储40多亿成员(2^32-1)
5. 有序集合Zset => 场景:需要排序
有序集合的每个元素都关联一个double类型的分数值,
通过分数对集合中的成员进行从小到大排序
(排行榜)(排行榜)[video1:2, video3:5, video2:10]
Zset不包含重复值, 复杂度O(1)
每个集合对象可以存储40多亿成员(2^32-1)
地理空间 Geospatial => 附近的人…
GEO 主要用于存储地理位置信息,添加地理位置,计算某个地理位置范围有哪些地理位置,计算两个位置的距离
基数统计HyperLogLog => 进行不需要保留基数的统计时
统计淘宝首页访问人数,某篇文章访问IP数…
不会存储元素本身,花费的内存空间小12KB就可以存储2^64个不同的元素的基数
位图bitmaps/bitarray
位域Bitfields
流Streams
二、常用命令
1. 查看帮助
127.0.0.1:6379> help @string
127.0.0.1:6379> help set/SETSET key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]summary: Sets the string value of a key, ignoring its type. The key is created if it doesn't exist.since: 1.0.0group: string127.0.0.1:6379> set k1 hello
OK
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379> get k2
(nil)
2. 查看数据中的所有key
127.0.0.1:6379> keys *
1) "k1"# 检查某个key是否存在(有几个存在就返回数字几)
127.0.0.1:6379> exists k1
(integer) 1
127.0.0.1:6379> exists k1 k2
(integer) 1
127.0.0.1:6379> set k2 1
OK
127.0.0.1:6379> exists k1 k2
(integer) 2
3. 查看key数据类型
type
127.0.0.1:6379> type k1
string
127.0.0.1:6379> type k2
string
4. 删除指定key
del:同步删除
127.0.0.1:6379> set h2 world
OK
127.0.0.1:6379> keys *
1) "h2"
2) "k1"
3) "k2"
127.0.0.1:6379> del h2
(integer) 1
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
unlink: 非阻塞删除
,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作中完成
127.0.0.1:6379> set h1 abc
OK
127.0.0.1:6379> unlink h1
(integer) 1
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
5. 查看key的过期时间
ttl key
: 查看key还有多少秒过期
-1: 永不过期,-2 已经过期, n 还有n秒过期
127.0.0.1:6379> ttl k1
(integer) -1
127.0.0.1:6379> expire k1 30
(integer) 1
127.0.0.1:6379> ttl k1
(integer) 27
127.0.0.1:6379> ttl k1
(integer) -2
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379> keys *
1) "k2"
127.0.0.1:6379> ttl k10
(integer) -2
6. 选择数据库
数据库的选择[0-15],默认为0
select
更改
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty array)127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "k5"
2) "k1"
3) "k4"
4) "k2"
5) "k3"
7. 移动key
move
127.0.0.1:6379> move k5 1
(integer) 1
127.0.0.1:6379> keys *
1) "k1"
2) "k4"
3) "k2"
4) "k3"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "k5"
8. 查看有多少个数据
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379>dbsize
(integer) 4
9. 清空数据库
清空当前数据库
127.0.0.1:6379>
flushdb
OK
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> keys *
(empty array)
清空所有数据库
127.0.0.1:6379>
flushall
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty array)