Redis数据类型与基本操作

1. 简述

Redis支持5种数据类型,分别为String、Hash、List、Set、Sort Set,其概述及操作如下。

1.1 String 字符串

Redis的字符串是字节序列,有一个已知长度,且不像C/C++中有一个特殊的字符决定终止,所以可以存储任何内容,其最大可存储512M数据。其常用命令包括get、set、incr、decrby、mget等,例:

redis 127.0.0.1:6379> SET number 1000
OK
redis 127.0.0.1:6379> INCR number
(integer) 1001
redis 127.0.0.1:6379> DECRBY number 5
(integer) 996
redis 127.0.0.1:6379> GET number
"996"
redis 127.0.0.1:6379> mget number number2
1) "996"
2) (nil)

1.2 Hash 哈希值

Redis的哈希键值对的集合,每个Hash集合可存储2^32 - 1个字段(4294967295个字段).常用命令包括hget、hset、hgetall 等,例:

redis 127.0.0.1:6379> HMSET user:1 username xiaoming password 123456
OK
redis 127.0.0.1:6379> HGET user:1 username
"xiaoming"
redis 127.0.0.1:6379> HGET user:1 password
"123456"
redis 127.0.0.1:6379> HGETALL user:1
1) "username"
2) "xiaoming"
3) "password"
4) "123456"

1.3 List 列表

Redis的list列表是简单的字符串列表,按插入顺序排列,可指定添加元素在List列表的头部或者尾部,列表最大长度为2^32 - 1个元素。其常用操作包括lpush、rpush、lpop、rpop、lrange等,例:

redis 127.0.0.1:6379> lpush comp c++
(integer) 1
redis 127.0.0.1:6379> lpush comp java
(integer) 2
redis 127.0.0.1:6379> rpush comp php
(integer) 3
redis 127.0.0.1:6379> lrange comp 0 10
1) "java"
2) "c++"
3) "php"
redis 127.0.0.1:6379> lpop comp
"java"
redis 127.0.0.1:6379> rpop comp
"php"
redis 127.0.0.1:6379> lrange comp 0 10
1) "c++"

1.4 Set 集合

Redis的Set集合是无序的,可以添加,删除和测试文件是否存在在O(1)的时间复杂度的成员,成员中最大数量为2^32 - 1个。其常见操作为sadd、srem、spop、sdiff、smembers、sunion 等,例:

redis 127.0.0.1:6379> sadd myset redis
(integer) 1
redis 127.0.0.1:6379> sadd myset mongodb
(integer) 1
redis 127.0.0.1:6379> sadd myset rabitmq (integer) 1
redis 127.0.0.1:6379> sadd myset rabitmq (integer) 0
redis 127.0.0.1:6379> smembers myset
1) "redis"
2) "rabitmq"
3) "mongodb"
redis 127.0.0.1:6379> srem myset rabitmq (integer) 1
redis 127.0.0.1:6379> smembers myset
1) "redis"
2) "mongodb"
redis 127.0.0.1:6379> spop myset
"redis"
redis 127.0.0.1:6379> smembers myset
1) "mongodb"
redis 127.0.0.1:6379> sadd youset java
(integer) 1
redis 127.0.0.1:6379> sdiff myset youset
1) "mongodb"
redis 127.0.0.1:6379> sadd youset mongodb
(integer) 1
redis 127.0.0.1:6379> sdiff myset youset
(empty list or set)
redis 127.0.0.1:6379> sunion myset youset
1) "java"
2) "mongodb"

1.5 Sort List 集合排序

Redis的Sort List集合排序与List集合类似,不同的是,Sort List集合排序的每个成员都关联分数,用作排序时的参照,每个成员是独一无二的,但是分数可以重复。其常见操作有zadd、zrange、zrem、zcard等,例:

redis 127.0.0.1:6379> zadd language 0 c++
(integer) 1
redis 127.0.0.1:6379> zadd language 2 java
(integer) 1
redis 127.0.0.1:6379> zadd language 1 php
(integer) 1
redis 127.0.0.1:6379> zadd language 4 sql
(integer) 1
redis 127.0.0.1:6379> zadd language 3 js
(integer) 1
redis 127.0.0.1:6379> zrange language 0 10
1) "c++"
2) "php"
3) "java"
4) "js"
5) "sql"
redis 127.0.0.1:6379> zrem language c++
(integer) 1
redis 127.0.0.1:6379> zrange language 0 10
1) "php"
2) "java"
3) "js"
4) "sql"
redis 127.0.0.1:6379> zcard language
(integer) 4
redis 127.0.0.1:6379> zadd language 11 html
(integer) 1
redis 127.0.0.1:6379> zrange language 0 10
1) "php"
2) "java"
3) "js"
4) "sql"
5) "html"
redis 127.0.0.1:6379> zcard language
(integer) 5

总结

Redis作为一个开源的使用ANSI C编写的、支持网络、可基于内存也可持久化的日志型、key-Value数据库,并提供多种语言的API,尤其其高性能的读写能力更是毫不逊色,是作为大型网络架构中缓存层数据存储的一种选择。

以上,仅为学习Redis记录,如有错误,请以事实为准,并欢迎指正。

路漫漫其修远兮。

你可能感兴趣的:(redis,NoSQL)