简介
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

基于redis二次开发_Redis

.msi文件安装之后,在安装位置下的文件和zip解压后文件内容相同,而且Redis安装之后并没有快捷方式,因此直接用zip解压即可!

推荐在用msi安装中勾选路径添加到系统变量中,使用zip解压也要将Redis解压后的路径添加到系统变量中。

基于redis二次开发_Redis_02


双击redis-server.exe,会出现如下界面:

基于redis二次开发_redis_03


另外启动一个cmd命令行(可以不用在Redis目录下),原来的界面不要关闭,输入命令:

redis-cli.exe -h 127.0.0.1 -p 6379
set mykey 123
get mykey

以上命令分别为:连接主机->设置键值对->取出键值对

基于redis二次开发_基于redis二次开发_04

配置
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"