简介
REmote DIctionary Server(Redis) 是一个key-value 存储系统,是跨平台的非关系型数据库。被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
特点
Redis 与其他 key - value 缓存产品有以下三个特点:
1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3. Redis支持数据的备份,即master-slave模式的数据备份。
安装
下载地址:Redis
.msi文件安装之后,在安装位置下的文件和zip解压后文件内容相同,而且Redis安装之后并没有快捷方式,因此直接用zip解压即可!
推荐在用msi安装中勾选路径添加到系统变量中,使用zip解压也要将Redis解压后的路径添加到系统变量中。
双击redis-server.exe,会出现如下界面:
另外启动一个cmd命令行(可以不用在Redis目录下),原来的界面不要关闭,输入命令:
redis-cli.exe -h 127.0.0.1 -p 6379
set mykey 123
get mykey
以上命令分别为:连接主机->设置键值对->取出键值对
配置
Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.windows.conf
通过 CONFIG 命令查看或设置配置项。
查看全部配置信息:
config get *
127.0.0.1:6379> config get *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) ""
5) "masterauth"
6) ""
7) "cluster-announce-ip"
8) ""
9) "unixsocket"
10) ""
11) "logfile"
12) ""
13) "pidfile"
14) ""
15) "slave-announce-ip"
16) ""
17) "replica-announce-ip"
18) ""
19) "maxmemory"
20) "0"
21) "proto-max-bulk-len"
22) "536870912"
查看某个配置信息:
127.0.0.1:6379> config get dir
1) "dir"
2) "D:\\APP_install\\Redis"
config set可以修改配置信息:
127.0.0.1:6379> config set loglevel "debug"
OK
127.0.0.1:6379> config get loglevel
1) "loglevel"
2) "debug"
127.0.0.1:6379> config set loglevel "notice"
OK
127.0.0.1:6379> config get loglevel
1) "loglevel"
2) "notice"
数据类型
Redis支持五种数据类型:
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(有序集合)
1)string
1.string 是 redis 最基本的类型,一个 key 对应一个 value。
2.string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
3.string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> get key1
"value1"
2)哈希
Redis hash 是一个键值(key=>value)对集合。
是 string 类型的 field 和 value 的映射表,hash适合用于存储对象。
设置:
hmset key field value [field value ...]
获取:
hget key field
设置hash要保证不能和之前的key重复,否则会报错;
一个hash可以存储多个键值对;
hash要用hget获取,用get报错;
127.0.0.1:6379> set mykey mykey
OK
127.0.0.1:6379> get mykey
"mykey"
127.0.0.1:6379> hmset mykey mykey 12
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> hmset mykey filed1 test1 filed2 test2
OK
127.0.0.1:6379> hget mykey filed
(nil)
127.0.0.1:6379> hget mykey filed1
"test1"
127.0.0.1:6379> get mykey
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> hget mykey
(error) ERR wrong number of arguments for 'hget' command
3)列表
简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> lpush mykey 111
(integer) 1
127.0.0.1:6379> lpush mykey 222
(integer) 2
127.0.0.1:6379> lpush mykey 333
(integer) 3
127.0.0.1:6379> rpush mykey aaa
(integer) 4
127.0.0.1:6379> rpush mykey bbb
(integer) 5
127.0.0.1:6379> lrange mykey 0 10
1) "333"
2) "222"
3) "111"
4) "aaa"
5) "bbb"
4)Set
Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
sadd:添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> sadd mykey test1
(integer) 1
127.0.0.1:6379> sadd mykey test2
(integer) 1
127.0.0.1:6379> sadd mykey test3
(integer) 1
127.0.0.1:6379> sadd mykey test3
(integer) 0
127.0.0.1:6379> smembers mykey
1) "test2"
2) "test1"
3) "test3"
5)zset
和set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> zadd mykey 1 test1
(integer) 1
127.0.0.1:6379> zadd mykey 1 test2
(integer) 1
127.0.0.1:6379> zadd mykey 1 test2
(integer) 0
127.0.0.1:6379> zrangebyscore mykey 0 10
1) "test1"
2) "test2"