Redis 学习笔记—— 基本数据类型

Posted Johnny*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 学习笔记—— 基本数据类型相关的知识,希望对你有一定的参考价值。

redis数据类型

通用命令

keys: 返回数据库中键的个数,会扫描所有的数据, 阻塞其他操作, 不建议使用。
dbsize: 同上,也是查看key的数量。但是是O(1)操作
exists key:判断是否存在对应的key。如果存在则返回1,不存在则返回0。
expire key seconds:设置键的过期时间(seconds,单位是秒)
ttl key: 获取key的有效实际。其中 -1 表示永久有效, -2 表示无效的键。
persist key: 把一个过期的时间的key变为一个永久的key
del key : 删除某个键
type key : 返回key对应的数据类型

为什么Redis会这么快

  1. 内存存储(主要原因)。Redis是基于内存的数据库。

  2. 数据处理模型,采用单线程,epoll模型。
    在这里插入图片描述

  3. 避免上下文切换和竞态消耗

  4. 使用epoll模型,非阻塞IO

  5. 并不完全是单线程。备份线程。会在同步线程时候,开启新的线程,
    单线程–> 工作线程线程

基本数据类型

String

127.0.0.1:6379> set name "johnny"
OK
127.0.0.1:6379> get name
"johnny"
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379> strlen name
(integer) 6
127.0.0.1:6379> del age
(integer) 0
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> 

批量设置

127.0.0.1:6379> mset name "johnny" age 23
OK
127.0.0.1:6379> mget name age
1) "johnny"
2) "23"
127.0.0.1:6379> mget name
1) "johnny"

计数器

127.0.0.1:6379> INCR age
(integer) 24
127.0.0.1:6379> incrby age 10
(integer) 34
127.0.0.1:6379> get age
"34"
127.0.0.1:6379> decr age
(integer) 33
127.0.0.1:6379> decrby age 13
(integer) 20

127.0.0.1:6379> lpush num 3 2 1
(integer) 3
127.0.0.1:6379> lrange num 0 -1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> rpop num
"3"
127.0.0.1:6379> rpop num
"2"
127.0.0.1:6379> rpop num
"1"
127.0.0.1:6379> rpop num
(nil)

127.0.0.1:6379> rpush mylist 5 3 4 6
(integer) 4
127.0.0.1:6379> rpop mylist
"6"
127.0.0.1:6379> LPOP mylist
"5"
127.0.0.1:6379> lrange mylist 0 1
1) "3"
2) "4"

Hash

127.0.0.1:6379> hset user:id:1 id 12 name "johnny" age 23
(integer) 3
127.0.0.1:6379> hlen user:id:1
(integer) 3
127.0.0.1:6379> hlen user:id:1 name
(error) ERR wrong number of arguments for 'hlen' command
127.0.0.1:6379> hset user:id:1 age 21
(integer) 0
127.0.0.1:6379> hget user:id:1 age
"21"
127.0.0.1:6379> hget user:id:1 name
"johnny"
127.0.0.1:6379> hexists user:id:1 sex
(integer) 0
127.0.0.1:6379> hexists user:id:1 age
(integer) 1

批量操作

127.0.0.1:6379> hmset user:id:2 name "Mike" age 36 sex 1
OK
127.0.0.1:6379> hget user:id:2
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hmget user:id:2
(error) ERR wrong number of arguments for 'hmget' command
127.0.0.1:6379> hmget user:id:2 name age sex
1) "Mike"
2) "36"
3) "1"

127.0.0.1:6379> hsetnx user:id:2 height 168
(integer) 1
127.0.0.1:6379> hget user:id:2 height
"168"
127.0.0.1:6379> hsetnx user:id:2 height 170
(integer) 0
127.0.0.1:6379> hget user:id:2 height
"168"
127.0.0.1:6379> HINCR user:id:2 height 
(error) ERR unknown command 'HINCR'
127.0.0.1:6379> hincrby user:id:2 height 1
(integer) 169

set

127.0.0.1:6379> sadd user:1:friends 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd user:2 friends 3 5 8 11
(integer) 5
127.0.0.1:6379> smembers user:1
(empty list or set)
127.0.0.1:6379> smembers user:1:friends
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> smembers user:2
1) "8"
2) "5"
3) "friends"
4) "3"
5) "11"
127.0.0.1:6379> srem user:2 3
(integer) 1
127.0.0.1:6379> smembers user:2
1) "friends"
2) "8"
3) "11"
4) "5"
127.0.0.1:6379> srem user:2 friends
(integer) 1
127.0.0.1:6379> smembers user:1:friends
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"


.

127.0.0.1:6379> smembers user:1:friends
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> smembers user:2
1) "8"
2) "11"
3) "5"
127.0.0.1:6379> sdiff user:1:friends user:2
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> sunion user:1:friends user:2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "8"
7) "11"
127.0.0.1:6379> sinter user:1:friends user:2
1) "5"

以上是关于Redis 学习笔记—— 基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Redis学习笔记

Redis学习笔记

Redis学习笔记——数据类型及操作

Redis学习笔记-数据类型之string类型

Redis学习笔记

Redis 学习 —— 数据类型及操作