本人是通过菜鸟教程学习Redis的,本编文章纯属个人做笔记记录而已,大家可以去菜鸟教程学习Redis,比在我这里看强多了。
1.介绍
引用百度百科对Redis的定义:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 [1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
2.Redis安装
Redis下载地址:https://github.com/MSOpenTech/redis/releases
进入该网址后,可看到如图(1)所示:
第一眼看到的是各个版本及其描述信息,选择适合自己电脑的版本下载即可。
下载后解压在自己想解压的地方,我是解压到I:\Redis-x64-3.2.100,如图(2)所示:
其实到了这一步也就可以说是安装好了,接下来是如何使用Redis。
3.Redis的使用
在命令窗口进入到redis路径,运行:
redis-server redis.windows.conf
如图(3)所示:
这样就相当于启动数据库服务器了。
注意:Redis默认使用6379端口。在图(3)中port:6379表示端口号,PID:4820表示服务器所处线程ID。
另外,在启动服务器时还遇到一个问题,索性就记录下来:
当运行:
redis-server
后面不加配置文件名称时会出现如图(4)错误:
在官方找到了如下解释,如图(5):
地址:https://redis.io/topics/quickstart
借用翻译软件,如图(6):
其实还有更方便的启动方式,就是将Redis的路径加到系统环境变量里,这样就不用进入到Redis路径里才能使用Redis了。
3.Redis客户端
在命令窗口进入客户端,运行:
redis-cli
改命令用于启动连接到本地的redis,如图(7)所示:
之后再ping一下,看是否服务器已经启动,其实我感觉ping不ping否无所谓,因为如果服务器未启动,启动客户端的时候总是无法连接到服务器,如图(8)所示:
上述是连接到本地服务器,如果要连接到远程服务器,语法如下:
redis-clip -h IP地址 -p 端口号 -a 验证密码
例如:
redis-clip -h 127.0.0.1 -p 6379 -a "mypassword"
4.Redis的数据类型
字符串(String)
哈希(Hash)
列表(List)
集合(Set)
有序集合(sorted set)
-
字符串(String)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
语法
设置指定key的值
127.0.0.1:6379> set 指定的key 对应的值value
取指定key的值
127.0.0.1:6379>get 指定的key
例如
上图中 hany 是key,LXH是值。
在使用过程中,发现出现中文乱码问题,这个在启动客户端时在命令后面加上--raw即可解决,图(9)所示:
-
哈希(Hash)
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
语法
同时将多个field-value(域-值)或者一个field-value(域-值)对设置到哈希表key中
127.0.0.1:6379>hmset 指定的key 指定的域field 对应的value 指定的域field 对应的value
删除指定哈希key中的指定field(域),可删除一个或多个
127.0.0.1:6379>hdel 指定的key 指定的域field 指定的域field
获取指定哈希key中指定的域field的值
127.0.0.1:6379>hget 指定的key 指定的域field
获取指定哈希key的全部域与值
127.0.0.1:6379>hgetall 指定的key
例如
-
列表(List)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
语法
指定列表key插入数据
127.0.0.1:6379>lpush 指定的key 数据
指定列表key移出第一个数据
127.0.0.1:6379>lpop 指定的key
获取指定列表key的指定范围内的值
127.0.0.1:6379>lrange 指定key 开始 结束
例如
-
集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
语法
指定集合的key添加一个成员或多个成员
127.0.0.1:6379>sadd 指定的key 添加的成员 添加的成员 添加的成员
指定集合的key获取全部成员
127.0.0.1:6379>smembers 指定的key
注意:成员是唯一值,不可重复
例如
-
有序集合(sorted Set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
语法
指定有序集合的key添加成员,需要为每个成员分配一个分值用于排序(分值可重复;只要是成员,都不可重复)
127.0.0.1:6379>zadd 指定的key 分值 成员 分值 成员 分值 成员
指定有序集合的key,按分值范围获取成员
127.0.0.1:6379>zadd 指定的key 最低分 最高分
指定有序集合的key,按索引范围区间获取成员
127.0.0.1:6379>zrange 指定的key 开始 结束
例如
5.键(key)
Redis 键命令用于管理 redis 的键。
语法
删除指定的key
127.0.0.1:6379>del 指定的key
检查key是否存在,返回1表示存在、0表示不存在
127.0.0.1:6379>exists 指定的key
例如