在接下来的一段时间里面我要将自己学习的redis整理一遍,下面是我整理的一些资料:
Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store),所以redis是可以查看源代码 。
它是通常被称为数据结构服务器,因为值(value)可以使字符串(string)、哈希(hashes)、列表(list)、集合(sets),和有序集合(sorted sets)类型。
在将redis类型以前我们先在自己的电脑上安装一下redis,打开选择2.8.2400这个版本,下载msi。msi是安装版本,zip是免安装版本。区别在于msi安装版本安装后可以以服务的形式存在。需要注意的是redis安装包没有32位系统的只有64位的
安装到D盘中,如下
接下来再看看我们的服务有一个redis的服务,而且该服务已经启动。
然后我就使用(redis-cli.exe)客户端连接redis服务。连接redis服务器的命令为redis-cli.exe -h 127.0.0.1 -p 6379 -auth 密码
先开打运行程序输入“cmd”然后如下:
因为默认端口为6379所有可以不用-p 6379 ,同时刚安装默认情况下没有密码,所以不需要密码。
然后我在命令行输入"echo "hello redis" ",如果返回"hello redis" 说明连接成功,这样我们就完成了redis安装,也知道如何连接redis服务。
下面开始简单介绍字符串(string)、哈希(hashes)、列表(list)、集合(sets),和有序集合(sorted sets)类型。
字符串(string)
String类型是最常用的一种数据类型,普通的Key/value存储都可以归为此类。一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,可以存放json数据,图像数据等等。value存储最大数据量为512M。 set key value #将字符串值value关联到key redis hash是一个string类型的field和value的映射表。它的添加,删除操作都是O(1)(平均)。hash特别适合用于存储对象。 hash-max-zipmap-entries 64 #配置字段最多64个。
hash-max-zipmap-value 512 #配置value最大为512字节。
hset key field #将哈希表key中的域field的值设为value hget key field #返回哈希表key中给定域field的值。 以及hdel、hgetall、hkeys、hvals等 redis的list类型其实就是一个每个子元素都是string类型的双向链表。所以[lr]push和[lr]pop命令的算法时间复杂度都是O(1),另外list会记录链表的长度。所以llen操作也是O(1).链表的最大长度是(2的32次方-1)。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。 lset key index value #将列表key下标为index的元素的值设置为value。当然不可以直接使用 要先使用命令 lpush kye value #将一个或多个value插入到列表key的表头 lrange key start stop #返回列表key中指定区间内的元素,区间以偏移量start和stop指定。 lrange listkey 0 -1 表示显示所有数据 lrange listkey 0 0 表示显示第一个元素 redis的set是string类型的无序集合。set元素最大可以包含(2的32次方-1)个元素。set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1)。 sadd key member #将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。 smembers key #返回集合key中的所有成员。 以及sdiff、sinter、sunion、scard等 和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score。sorted set的实现是skip list和hash table的混合体当元素被添加到集合中时,一个元素到score的映射被添加到hash table中,所以给定一个元素获取score的开销是O(1),另一个score到元素的映射被添加到skip list并按照score排序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是O(log(N))和skip list的开销一致,redis的skip list实现用的是双向链表,这样就可以逆序从尾部取元素。 zadd key score member #将一个或多个member元素及其score值加入到有序集key当中。 zrange key start stop [withscores] #返回有序集key中,指定区间内的成员。其中成员的位置按score值递增(从小到大)来排序。还有一个可选分值 以及zcard、zcount、zrank、zrem、zscore等 以上是自己个人学习的记录,如果有什么不对的地方请大家指正,欢迎评论!