初步理解Redis及其安装配置

来源:互联网 发布:电力工程预算软件 编辑:程序博客网 时间:2024/05/17 17:58


1, Redis是什么

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

NoSql. 对这个NoSql的印象源自我上学期一个讲分布式和云计算的课程的final report。说实话我连那篇report的题目都忘了,但是记得大概内容是在说NoSql好。主要的好处是可以有复杂的数据结构吧,然后容易和面向对象做个映射。回忆下曾经设计关系型数据库各种伤脑筋思考如何把各种复杂对象映射到一个带关系网络的平面二维表就大概可以知道这个的好处了。

2,数据结构

  • 字符串:大家都知道字符串是什么玩意,上例子。
   1: $ redis-cli set mykey "my binary safe value"

   2: OK

   3: $ redis-cli get mykey

   4: my binary safe value

这个例子里有基本的set, get方法。set后面跟的是key,key可以是任何形式,和关系型数据库不一样的是,在key的长度和type上做精简对于整个系统的节省掉的东西并不大,因为最终都是对象形式的。所以,Key还是可读性强些为好。任何形式,包括可以塞一张图片做key。后面那个字段就是值了,这个例子是字符串,所以,它显示了下它的特征,二进制安全。
  • 列表

这里指的是链表,而非数组。区别在于,链表对插入操作比较友好,数组对遍历比较友好。友好的意思是速度友好。这个对于要做查询的话可能会稍微慢一点点,总之还有别的机制来保证速度问题,比扔一个存着几亿数字的数组在内存里好多了。因为对数据库来说,保证插入的速度是很关键的。主要命令有两个LPUSH,RPUSH。L代表左,R代表右。

   1: $ redis-cli rpush messages "Hello how are you?"

   2: OK

   3: $ redis-cli rpush messages "Fine thanks. I‘m having fun with Redis"

   4: OK
  10: 3. I should look into this NOSQL thing ASAP

   5: $ redis-cli rpush messages "I should look into this NOSQL thing ASAP"

   6: OK

   7: $ redis-cli lrange messages 0 2

   8: 1. Hello how are you?

   9: 2. Fine thanks. I‘m having fun with Redis

LRANGE用来获取子列表。第一个元素的索引为0。需要注意的是,-1并不代表空列表,而是最后一个数的索引,-2代表倒数第二个。

存储对象时,值中通常存储对象ID。

   1: $ redis-cli incr next.news.id

   2: (integer) 1

   3: $ redis-cli set news:1:title "Redis is simple"

   4: OK

   5: $ redis-cli set news:1:url "http://code.google.com/p/redis"

   6: OK

   7: $ redis-cli lpush submitted.news 1

   8: OK

第一句为自增一个id。但是这段代码里的next和submitted是如何和对象联系在一起的,还不明白,待会回头理解。=> 传说中的命名空间,继续看。

  • 集合

SADD命令可以向集合添加一个新元素。

   1: $ redis-cli sadd myset 1

   2: (integer) 1

   3: $ redis-cli sadd myset 2

   4: (integer) 1

   5: $ redis-cli sadd myset 3

   6: (integer) 1

   7: $ redis-cli smembers myset

   8: 1. 3

   9: 2. 1

  10: 3. 2

SMEMEBER命令获取集合里的元素。

  • 有序集合

有木有觉得这个名字有点怪怪的?总之了,就是可以根据某个字段排序,在插入的时候就根据那个排好了。

   1: $ redis-cli zadd hackers 1940 "Alan Kay"

   2: (integer) 1

   3: $ redis-cli zadd hackers 1953 "Richard Stallman"

   4: (integer) 1

   5: $ redis-cli zadd hackers 1965 "Yukihiro Matsumoto"

   6: (integer) 1

   7: $ redis-cli zadd hackers 1916 "Claude Shannon"

   8: (integer) 1

   9: $ redis-cli zadd hackers 1969 "Linus Torvalds"

  10: (integer) 1

  11: $ redis-cli zadd hackers 1912 "Alan Turing"

  12: (integer) 1

这个插入之后可以看到是按照年份从小到大排序的。从年老到年轻排序的。输出结果

   1: $ redis-cli zrange hackers 0 -1

   2: 1. Alan Turing

   3: 2. Claude Shannon

   4: 3. Alan Kay

   5: 4. Richard Stallman

   6: 5. Yukihiro Matsumoto

   7: 6. Linus Torvalds

反向输出

   1: $ redis-cli zrevrange hackers 0 -1

   2: 1. Linus Torvalds

   3: 2. Yukihiro Matsumoto

   4: 3. Richard Stallman

   5: 4. Alan Kay

   6: 5. Claude Shannon

   7: 6. Alan Turing

在有多种排序切换的实际应用中,可以考虑把每个元素加入多个有序集合,比SORT命令的效率可能会高。

  • 哈希表

批量修改和获取。

   1: redis 127.0.0.1:6379> HMSET kid name Akshi age 2 sex Female

   2: OK

   3: redis 127.0.0.1:6379> HMGET kid name age sex

   4: 1) "Akshi"

   5: 2) "2"

   6: 3) "Female"

查看已有的哈希表的值及删除操作

   1: redis 127.0.0.1:6379> HKEYS student

   2: 1) "name"

   3: 2) "age"

   4: 3) "sex"

   5: redis 127.0.0.1:6379> HVALS student

   6: 1) "Ganesh"

   7: 2) "30"

   8: 3) "Male"

   9: redis 127.0.0.1:6379> HGETALL student

  10: 1) "name"

  11: 2) "Ganesh"

  12: 3) "age"

  13: 4) "30"

  14: 5) "sex"

  15: 6) "Male"

  16: redis 127.0.0.1:6379> HDEL student sex

  17: (integer) 1

  18: redis 127.0.0.1:6379> HGETALL student

  19: 1) "name"

  20: 2) "Ganesh"

  21: 3) "age"

  22: 4) "30"

其他详细的命令请参考Redis Documentation。 redis网站上还有个交互式的入门教程interactive tutorial。

3,Redis的安装 (Window)

下载地址:https://github.com/dmajkic/redis/downloads 是一个第三方的预编译文件夹,官方只有linux的

Redis文件夹有以下几个文件
redis-server.exe:服务程序

redis-check-dump.exe:本地数据库检查

redis-check-aof.exe:更新日志检查

redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).

启动服务器端

解压目录:\>redis-server.exe redis.conf 

之后命令窗口上会一直打印有多少个客户端连接了。虽然一直在打印看得心里不舒服的,还是得开着

启动客户端

新开一个命令行窗口,指定一服务器和端口

解压目录:\>redis-cli.exe -h 127.0.0.1 -p 6379

之后就可以在客户端直接操作了

image

终于把命令行给运行出来了,这个东西存储在哪目前不明,以后继续。

PS:客户端关闭后,继续lrange friends –1,结果还是存在的。服务器关闭之后再开启就没了,,,这个要是服务器断电当机了怎么办。。。应该有解决办法吧,先把程序测试通了再继续

PSPS:这个LiveWriter上的编辑格式很不好用,不知道是LiverWriter影响的,还是我的网站样式本来就不支持,总之用得挺不舒服的,特别是还不能调段落,而且懒得改CSS样式的时候。

原创粉丝点击