赞
踩
我们在上一篇文章中编译出来的可直接执行程序 redis-cli ,redis-cli (Redis Command Line Interface) 是Redis自带的基于命令行的Redis客户端。
1.直接输入命令redis-cli ,前提启动redis服务。
# redis-cli
2.使用命令 redis-cli -h 127.0.0.1 -p 6379
# redis-cli -h 127.0.0.1 -p 6379
返回如下,说明成功
127.0.0.1:6379>
Redis提供了PING命令来测试客户端于Redis的连接是否正常,连接正常会收到回复 PONG 。
127.0.0.1:6379> ping
PONG
在大多数情况下,执行一条命令后我们往往关心命令的返回值。命令的返回值有五种类型,下面一一说明:
1.状态回复(status reply)
如上面的Ping命令返回PONG一样
例:
127.0.0.1:6379> set name zhangsan
OK
2.错误回复
当出现命令不存在或命令格式有错误等情况时,Redis会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息。
例
127.0.0.1:6379> error
(error) ERR unknown command 'error'
3.整数返回
Redis 虽然没有整数类型,但提供了一些用于整数操作的命令。除此之外,一些其他命令也会返回整数。整数回复(integer reply) 以 (integer)开头,并在后面跟上整数数据。
例:递增键值的INCR命令会以整数形式返回递增后的键值。
127.0.0.1:6379> incr zhangsan
(integer) 1
4.字符串回复(bulk reply)
当请求一个字符串类型键的键值或一个其他类型键中的某个元素时会得到一个字符串回复。字符串回复以双引号包裹
例
127.0.0.1:6379> get name
"zhangsan"
5.多行字符串回复(multi-bulk reply)
当请求一个非字符串类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开头。
例:
127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379> HGETALL runoobkey
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
redis-server 的启动参数port 设置了redis 的端口号,除此之外Redis还支持其他配置选项。redis支持配置文件来设置这些选项。启用配置文件的方法是在启动时将配置文件的路径作为启动参数传递给redis-server,如:
# redis-server /path/redis.conf
通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数,如下
# redis-server /path/redis.conf --loglevel warning
其中path为您的路径。
Redis运行时通过CONFIG SET 命令在不重新启动Redis 的情况下动态修改redis的配置。如下:
127.0.0.1:6379> CONFIG SET loglevel warning
OK
当然,不是所有的配置都可以使用CONFIG SET命令修改。同时在运行的时候可以使用CONFIG GET 命令获得redis 当前的配置情况,如下:
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "warning"
其中第一行字符串回复表示的是选项名,第二行即是选项值。
Redis 是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与我们熟知的在一个关系数据库实例中可以创建多个数据库类似,所有可以将其中的每个字典都理解成一个独立的数据库。
每个数据库对外都是以一个从0开始的递增数字命名,Redis 默认支持16个数据库,可以通过配置参数databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库,如要选择1号数据库:
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379> GET name
(nil)
然而这些以数字命名的数据库又与我们理解的数据库有所区别。首先Redis 不支持自定义数据库的名字,每个数据库都以编号命名,开发者必须自己记录那些数据库存储了那些数据。二,Redis也不支持为每个数据库设置不同的访问密码,所有一个客户端要么可以访问全部数据库,要么连一个数据库也没有访问权限。三、多个数据库之间并不是完全隔离的,如FLUSHALL 命令可以清空一个Redis实例中所有数据库中的数据。
综上所述,这些数据库更像是一个命名空间,而不适宜存储不同应用程序的数据。不同的应用应该使用不同的Redis实例存储数据。由于Redis非常轻量级,不用担心多个Redis 实例会额外占用很多内存。
在Redis的学习中,对于字典这一数据结构的理解很重要,当然也比较难,本人也查阅一些资料和文章,无不涉及Redis源码的分析,本人看的也是一知半解,但对于想要深入了解Redis的同学来说,应该有些帮助,在这里推荐一篇Redis内部数据结构详解之字典(dict)给大家。
对于高段同学,我向大家推荐的 Redis源码分析系列文章该系列文章的作者一共写了十多遍,很详细,当然内容是有些难度的,虽然我现在看不太懂,但也在这里对该作者以及所有在开源世界里行走的同学们表示鼓励和感谢,共勉之。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。