redis入门
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。1、存储结构 Redis是REmote DIctionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。Redis支持的键值数据类型如下:(1)字符串类型(2)散列类型(3)列表类型(4)集合类型(5)
·
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。
1、存储结构
Redis是REmote DIctionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。Redis支持的键值数据类型如下:
(1)字符串类型
(2)散列类型
(3)列表类型
(4)集合类型
(5)有序集合类型
这种字典形式的存储结构与常见的MySQL等关系数据库的二维表形式的存储结构有很大差异。
2、内存存储和持久化
Redis数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘,因此Redis在性能上对比其他基于硬盘存储的数据库有非常明显的优势。
将数据存储在内存中也有问题,当程序退出后内存中的数据会丢失。不过Redis提供了对持久化的支持,即将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。
3、功能丰富
Redis可以为每个键设置生存时间(TTL),生存时间到期后键会自动被删除,这一功能配合出色的性能让Redis可以作为缓存系统来使用。(在性能上Redis是单线程模型,而Memcached支持多线程,所以在多核服务器上Memcached的性能更高,如果需要用到高级的数据类型或是持久化等功能,Redis将是Memcached很好的替代品)。
作为缓存系统,Redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键。除此之外,Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易实现一个高性能的优先级队列。
4、简单稳定
Redis直观的存储结构使得通过程序与Redis交互十分简单。在Redis中使用命令来读写数据,命令语句之与Redis就相当于SQL语句之与关系数据库
5、Redis命令行客户端
Redis自带的基于命令行的客户端为redis-cli
(1)发送命令
通过redis-cli发送命令有两种方式:
方式一:将命令作为redis-cli的参数执行
方式二:不带参数运行redis-cli,这样会进入交互模式,可以自由输入命令。这种方式在要输入多条命令时比较方便
(2)命令返回值
①状态回复,状态回复会直接显示状态信息。ping命令的回复是PONG
②错误回复,当出现命令不存在或命令格式有错误等情况时会返回错误回复,以(error )开头,并在后面跟上错误信息
③整数回复,当执行用于整数操作的命令时会返回整数回复,以(integer )开头,并在后面跟上整数数据
④字符串回复,当请求一个字符串类型键的键值或一个其他类型键中的某个元素时会返回字符串回复,以双引号包裹;特殊情况当请求的键值不存在时会返回空,显示为(nil)
⑤多行字符串回复,当请求一个非字符串类型键的元素列表时会收到多行字符串回复,多行字符串回复中的每行字符串都以一个序号开头
6、、配置
Redis支持通过配置文件配置选项,启用配置文件的方法是在启动时将配置文件的路径作为启动参数传递给redis-server:$ redis-server /path/to/redis.conf
通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数:
$ redis-server /path/to/redis.conf --loglevel warning
此外还可以在Redis运行时通过CONFIG SET命令在不重新启动Redis的情况下动态修改部分redis配置:redis> CONFIG SET loglevel warning
7、多数据库
redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中,这与我们熟知的在一个关系数据库实例中可以创建多个数据库类似,所以可以将其中的每个字典都理解成一个独立的数据库。
每个数据库对外都是以一个从0开始的递增数字命名,redis默认支持16个数据库,可以通过配置参数databases来修改这一数字。客户端与redis默认建立连接后会自动选择0号数据库,不过可以随时使用select命令更换数据库。
redis不支持自定义数据库的名字,每个数据库都以编号命名,开发者必须自己记录哪些数据库存储了哪些数据。此外redis也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部的数据库,要么连一个数据库也没有访问权限。最重要的是多个数据库之间并不是完全隔离的。
因此,这些数据库更像是一种命名空间,而不适宜存储不同应用程序的数据。不同的应用应该使用不同的redis实例存储数据。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)