Redis浅尝

Redis

数据类型

Redis最为常用的数据类型主要有以下五种:
 String、Hash、List、Set、Sorted set
在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:

这里写图片描述

首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type 代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式,比如:type=string代表value存 储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串 的,当然前提是这个字符串本身可以用数值表示,比如:”123” “456”这样的字符串。
下面我们先来逐一的分析下这五种数据类型的使用和内部实现方式:

String
常用命令:
set,get,decr,incr,mget 等。

实现方式:
String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。

Hash
常用命令:
hget,hset,hgetall 等。

List
常用命令:
lpush,rpush,lpop,rpop,lrange等。

实现方式:
Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。

Set
常用命令:
sadd,spop,smembers,sunion 等。

实现方式:
set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。

Sorted Set
常用命令:
zadd,zrange,zrem,zcard等

实现方式:
Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的 是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。

Redis的安装与启动

官网下载:http://Redis.io/download
安装

tar zxvf redis-2.8.9.tar.gz
cd redis-2.8.9

直接make 编译

make

可使用root用户执行make install,将可执行文件拷贝到/usr/local/bin目录下。

Part I. 直接启动

加上&号使redis以后台程序方式运行

./redis-server &

检测后台进程是否存在

ps -ef |grep redis

检测6379端口是否在监听

netstat -lntp | grep 6379

使用redis-cli客户端检测连接是否正常

./redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key “hello world”
OK
127.0.0.1:6379> get key
“hello world”

停止使用客户端

redis-cli shutdown

因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的

kill -9 PID

Part II. 通过指定配置文件启动

配置文件

可为redis服务启动指定配置文件,配置文件 redis.conf 在Redis根目录下。
修改daemonize为yes,即默认以后台程序方式运行。

daemonize no

可修改默认监听端口

port 6379

修改生成默认日志文件位置

logfile “/home/redis/logs/redis.log”

配置持久化文件存放位置

dir /home/redis/data/redisData

启动时指定配置文件

redis-server ./redis.conf

如果更改了端口,使用redis-cli客户端连接时,也需要指定端口,例如:

redis-cli -p 6380

其他方式的启停同直接启动一样。

Part III. 使用Redis启动脚本设置开机自启动

启动脚本

推荐在生产环境中使用启动脚本方式启动redis服务。
启动脚本 redis_init_script 位于位于Redis的 /utils/ 目录下。
redis习惯性用监听的端口名作为配置文件等命名
redis服务器监听的端口

REDISPORT=6379

服务端所处位置,在make install后默认存放与/usr/local/bin/redis-server,如果未make install则需要修改该路径,下同。

EXEC=/usr/local/bin/redis-server

客户端位置

CLIEXEC=/usr/local/bin/redis-cli

Redis的PID文件位置

PIDFILE=/var/run/redis_${REDISPORT}.pid

配置文件位置,需要修改

CONF=”/etc/redis/${REDISPORT}.conf”

配置环境
1. 根据启动脚本要求,将修改好的配置文件以端口为名复制一份到指定目录。
需使用root用户。

mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf

  1. 将启动脚本复制到/etc/init.d目录下,本例将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)。

cp redis_init_script /etc/init.d/redisd

  1. 设置为开机自启动
    此处直接配置开启自启动

chkconfig redisd on

将报错误:

service redisd does not support chkconfig

参照 此篇文章 ,在启动脚本开头添加如下两行注释以修改其运行级别:

/bin/sh
chkconfig: 2345 90 10
description: Redis is a persistent key-value database

再设置即可成功。
设置为开机自启动服务器

chkconfig redisd on

打开服务

service redisd start

关闭服务

service redisd stop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值