数据结构的服务器, 引用官方的一段话。
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 与其他 key - value 缓存产品有以下三个特点:
优势和之前的MongoDB类似, 就是快,还支持多种数据类型,已经原子操作属性。
macos 直接用 brew 安装即可。
brew install redis
windows 的可以用 github提供编译好的文件
其他可以用源码直接编译后添加到环境变量里面
然后输入redis-server
,输出下面就是安装成功。
再开一个tab输入 redis-cli
可以通过config
来查看或者修改配置。
可以输入conf 自动联想自动补全
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
redis 127.0.0.1:6379> CONFIG GET *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
....
127.0.0.1:6379> CONFIG SET loglevel warning
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "warning"
127.0.0.1:6379>
其他设置,常见的 port, daemonize, bind, timeout, logfile, databases
。
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
这个是最基础的类型,也是二进制的,因此只要可以转化二进制的都可以保存。set 和get。
127.0.0.1:6379> set chasays "学习redis"
OK
127.0.0.1:6379> get chasays
"\xe5\xad\xa6\xe4\xb9\xa0redis"
127.0.0.1:6379>
上面这个用utf8解码即可。启动
redis-cli --raw
(base) ➜ ~ redis-cli --raw
127.0.0.1:6379>
127.0.0.1:6379> get chasays
学习redis
127.0.0.1:6379>
Redis hash 是一个键值(key=>value)对集合。
HMSET, HMGET
127.0.0.1:6379> HMSET test field1 "Hello" field2 "World"
OK
127.0.0.1:6379> HMGET test field1
Hello
127.0.0.1:6379> HMGET test field2
World
每个 hash 可以存储 2^32 -1 键值对(40多亿)。
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。用到lpush, lrange
127.0.0.1:6379> LPUSH test 1
1
127.0.0.1:6379> LPUSH test 2
2
127.0.0.1:6379> LRANGE test 0 4
2
1
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。有2个函数要掌握
sadd和smembers
。
127.0.0.1:6379> sadd test 1
1
127.0.0.1:6379> sadd test 2
1
127.0.0.1:6379> SMEMBERS test
1
2
注意set里面的值是唯一的, sadd同一个value,是不会重复的。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
127.0.0.1:6379> zadd test 1 a
1
127.0.0.1:6379> ZADD test 2 b
1
127.0.0.1:6379> zadd test 1 c
1
127.0.0.1:6379> ZRANGEBYSCORE test 0 4
a
c
b
后面接着学习Redis的命令脚本和高级技术。