redis安装与学习

redis介绍

redis存储结构类型:字符串类型、散列型、列表型、集合型、有序集合型。

redis内存存储和持久化:redis数据库中的数据都存储在内存中,内存的读写速度快于硬盘,因此redis相对于那些将数据存储在硬盘上数据库有明显的优势。redis可以在一秒钟内读写十万个键值。redis提供持久化的支持,将内存中的数据异步写入到硬盘中,使数据不会丢失,同时不影响业务继续提供服务。

redis丰富的功能:Redis虽然是作为数据库开发的,但由于其提供了丰富的功能,越来越多的人将其用作缓存、队列系统等。Redis可谓是名副其实的多面手。Redis可以为每个键设置生存时间(Time To Live,TTL),生存时间到期后键会自动被删除。这一功能配合出色的性能让Redis可以作为缓存系统来使用,而且由于Redis支持持久化和丰富的数据类型,使其成为了另一个非常流行的缓存系统Memcached的有力竞争者。讨论 关于Redis和Memcached优劣的讨论一直是一个热门的话题。在性能上Redis是单线程模型,而Memcached支持多线程,所以在多核服务器上后者的性能更高一些。然而,前面已经介绍过,Redis的性能已经足够优异,在绝大部分场合下其性能都不会成为瓶颈。所以在使用时更应该关心的是二者在功能上的区别,如果需要用到高级的数据类型或是持久化等功能,Redis将会是Memcached很好的替代品。作为缓存系统,Redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键。除此之外,Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易地实现一个高性能的优先级队列。同时在更高层面上,Redis还支持“发布/订阅”的消息模式,可以基于此构建聊天室① 等系统。

系统环境:

[[email protected] ~]# uname -a
Linux DBSERVER 2.6.18-274.el5 #1 SMP Fri Jul 8 17:36:59 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.7 (Tikanga)

安装redis:

 tar -xf redis-3.0.0.tar.gz
 cd redis-3.0.0
 make
 make install

编辑redis配置文件redis.conf,添加如下内容:

cp redis.conf /etc/redis.conf

logfile "/var/log/redis.log"
port 6380  #默认redis的端口为6379
pidfile /var/run/redis.pid

启动redis:

redis-server /etc/redis.conf &

查看进程:

[[email protected] ~]# ps -ef|grep redis
root      6635  3519  0 11:42 pts/0    00:00:00 redis-server *:6380
root      6641  6537  0 11:43 pts/1    00:00:00 redis-cli -p 6380
root      6677  3519  0 12:23 pts/0    00:00:00 grep redis

使用redis-cli客户端连接redis:

[[email protected] ~]# redis-cli -p 6380
127.0.0.1:6380> echo hi
"hi"
127.0.0.1:6380> set foo 1
OK
127.0.0.1:6380> 

关闭redis:

redis-cli -p 6380 shutdown

回复类型

1.状态回复

状态回复(status reply)是最简单的一种回复,比如向Redis发送SET命令设置某个键的值时,Redis会回复状态OK表示设置成功。另外之前演示的对PING命令的回复PONG也是状态回复。状态回复直接显示状态信息,例如:

redis>PING

PONG

2.错误回复

当出现命令不存在或命令格式有错误等情况时Redis会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息。如执行一个不存在的命令:

redis>ERRORCOMMEND

(error) ERR unknown command ‘ERRORCOMMEND‘

3.整数回复

Redis虽然没有整数类型,但是却提供了一些用于整数操作的命令,如递增键值的INCR命令会以整数形式返回递增后的键值。除此之外,一些其他命令也会返回整数,如可以获取当前数据库中键的数量的DBSIZE命令等。整数回复(integer reply)以(integer)开头,并在后面跟上整数数据:

redis>INCR foo

(integer) 1

4.字符串回复字符串回复(bulk reply)是最常见的一种回复类型,当请求一个字符串类型键的键值或一个其他类型键中的某个元素时就会得到一个字符串回复。字符串回复以双引号包裹:

redis>GET foo

"1"

特殊情况是当请求的键值不存在时会得到一个空结果,显示为(nil)。如:

redis>GET noexists
(nil)

5.多行字符串回复

多行字符串回复(multi-bulk reply)同样很常见,如当请求一个非字符串类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开头,如:

redis> KEYS *
1) "bar"
2) "foo"

命令

1、赋值与取值

set key value

get key

127.0.0.1:6380> set foo 1
OK
127.0.0.1:6380> get foo
"1"
127.0.0.1:6380> get name
(nil)
127.0.0.1:6380> 

当键不存在时,返回一个空值。

2、递增数字

INCR key

127.0.0.1:6380> incr num
(integer) 1
127.0.0.1:6380> incr num
(integer) 2
127.0.0.1:6380> get num
"2"
127.0.0.1:6380> set foo cheeron
OK
127.0.0.1:6380> incr foo
(error) ERR value is not an integer or out of range

当操作的键不存在时会默认键值为0,所以第一次递增为1,当键值不是整数时,redis会提示错误。

3、增加指定的整数

INCRBY key increment

减少指定的整数

DECR key

DECRBY key decrement

127.0.0.1:6380> get num
"2"
127.0.0.1:6380> incrby num 3
(integer) 5
127.0.0.1:6380> get num
"5"
127.0.0.1:6380> decr num
(integer) 4
127.0.0.1:6380> decrby num 2
(integer) 2
127.0.0.1:6380> get num
"2"
127.0.0.1:6380> 

4、增加指定浮点数

INCRBYFLOAT key increment

127.0.0.1:6380> get num
"2"
127.0.0.1:6380> incrbyfloat num 2.4
"4.4"
127.0.0.1:6380> get num
"4.4"
127.0.0.1:6380> 

5、向尾部追加值

APPEND key value

获取字符串长度

STRLEN key

127.0.0.1:6380> set key hello
OK
127.0.0.1:6380> append key world
(integer) 10
127.0.0.1:6380> get key
"helloworld"
127.0.0.1:6380> strlen key
(integer) 10
127.0.0.1:6380> set key 我是青铜
OK
127.0.0.1:6380> strlen key
(integer) 12

当键值不存在时,返回长度为0,redis接收到的是UTF-8编码的中文,UTF-8编码的中文的长度是3

6、同时获得/设置多个值

MSET key value key value ...

MGET key1 key2 key3

127.0.0.1:6380> mset num1 1 num2 2 num3 3
OK
127.0.0.1:6380> mget num1 num2 num3
1) "1"
2) "2"
3) "3"
127.0.0.1:6380> 
时间: 2024-11-06 15:19:06

redis安装与学习的相关文章

redis 安装配置学习笔记

redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://download.redis.io/redis-stable.tar.gz 首先必须要有 gcc 与 make apt-get install gcc apt-get install make 1.解压 [email protected]:~# tar -xvf redis-stable.tar.gz 2.测

Redis学习笔记(1)Redis安装和启动

前言 作为一个开发者,一直想跟进一下大数据和云计算的步伐. 因此打算开始学习云计算和分布式数据的各种内容,先从Redis开始. Redis是Remote Dictionary Server的缩写,最初是开发用来作为数据库使用的工具. 在Linux下安装Redis非常简单 在终端运行以下命令 wget http://download.redis.io/redis-stable.tar.gz tar zxf redis-stable.tar.gz cd redis-stable.tar.gz mak

【Redis 1】Redis数据库的学习与实践—安装与部署

Redis数据库的学习与实践-安装与部署 一:Redis数据库简介: Redis-Remote DictionaryServer,可以直接理解为远程字典服务. 这里摘抄一段Redis官网上的话似乎更能准确的概述Redis的含义:Redis is an open source,BSD licensed, advanced key-valuecache and store.It is often referred to as a datastructure server since keys can

一、Redis安装 Redis学习记录

Redis学习记录 一.Redis安装安装Redis环境 系统 centos1.先到Redis官网(redis.io)下载redis安装包 https://redis.io/ 1.获取redis资源wget http://download.redis.io/releases/redis-5.0.5.tar.gz Linux执行 wget命令:提示command not found的两种解决方法https://blog.csdn.net/tyyking/article/details/830840

Redis学习笔记之二:redis安装windows/linux

一.windows下安装 下载地址:https://github.com/MSOpenTech/redis/releases   版本3.2.100 百度网盘: https://pan.baidu.com/s/1jI9g1xk 根据系统,选择32位或者64位(zip)进行下载,解压到任意目录保存. 也可以下载安装文件进行安装,安装完成后在服务中查看Redis服务是否正确的安装. 1.服务端启动:打开一个cmd窗口,切换到redis所在目录,运行 redis-server.exe redis.wi

Redis的安装及学习

最近因为做Chatbot项目需要对于NoSQL数据库进行研究,调研范围包括MongoDB和Redis.本文将介绍Redis在Windows环境的安装及如何利用python来操作Redis数据库. Redis基础 redis是Key Value nosql数据库,数据存储在内存中,单进程,自己实现了一套异步事件处理,虽然单进程但是数据库处理很快,异步持久化. Redis有5种数据类型: string,最基本的数据类型,也是其他四种数据类型的基础,能存储任何形式的字符创.适用:存储信息对象序列化JS

【Redis学习】:Windows环境下的Redis安装与配置

Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key- Value数据库,并提供多种语言的API. 它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(Map), 列表(list), 集 合(sets) 和 有序集合(sorted sets)等类

Redis学习(2)-redis安装

安装redis需要先从官网下载的源码进行编译,编译依赖GCC环境,如果没有GCC环境,需要安装GCC. yum install gcc-c++ 步骤1:上传 将Windows下下载的压缩文件上传Linux,通过sourceCRT进行上传.步骤如下: alt +R打开上传窗口,拖拽redis-3.0.0.tar.gz 上传 步骤2:解压文件 tar -zxvf redis-3.0.0.tar.gz 步骤3:编译redis(编译,将.c文件编译为.o文件) 进入解压文件夹:cd  redis-3.0

Redis缓存技术学习系列之邂逅Redis

??作为一个反主流的开发者,在某种程度上,我对传统关系型数据库一直有点"讨厌",因为关系型数据库实际上和面向对象思想是完全冲突的,前者建立在数学集合理论的基础上,而后者则是建立在软件工程基本原则的基础上.虽然传统的ORM.序列化/反序列化在一定程度上解决了这种冲突,但是软件开发中关于使用原生SQL语句还是使用ORM框架的争论从来没有停止过.可是实际的业务背景中,是完全无法脱离数据库的,除非在某些特定的场合下,考虑到信息安全因素而禁止开发者使用数据库,在主流技术中数据库是一个非常重要的组