Redis 安装
Window 下安装
下载地址:https://github.com/MSOpenTech/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。
打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。
redis-server.exe redis.windows.conf
- redis作为windows服务启动方式
redis-server --service-install redis.windows.conf
- dos命令
启动服务:redis-server --service-start 停止服务:redis-server --service-stop
如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
redis-cli.exe -h 127.0.0.1 -p 6379
设置键值对 set myKey abc
> set myKey abc
取出键值对 get myKey
> get myKey
Linux 下安装
下载地址:http://redis.io/download,下载最新文档版本。
- 本教程使用的最新文档版本为 2.8.17,下载并安装:
> wget wget http://download.redis.io/releases/redis-3.2.8.tar.gz > tar xzf redis-3.2.8.tar.gz > cd redis-3.2.8 > make && make install
make完后 redis-3.2.8目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
启动、关闭redis服务
> cd src > ./redis-server #启动 > ./redis-cli -p 6379 shutdown #关闭
- 注意
这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动
> cd src > ./redis-server redis.conf redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
- 启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互。比如:
> cd src > ./redis-cli redis> set foo bar OK redis> get foo "bar"
redis作为系统服务并开机启动
- 将redis服务作为守护进程来运行,修改配置文件
> vi redis.conf
- daemonize 表示是否作为守护进程运行,默认为false,改为true
- pidfile 当服务已手机进程方式运行时,redis默认会把pid写入这个路径文件中,服务运行中该文件会存在,服务一旦停止该文件就自动删除,可以根据这个文件来判断redis是否正在运行,可不修改,默认即可,
修改成功之后保存退出
- 在 /etc/目录下创建 redis目录,把配置文件复制到该目录下
> cd /etc
> mkdir redis
> cp /usr/local/src/redis2.8.17/redis.conf /etc/redis/6379.conf
管理启动、关闭、重启、查看状态的脚本
redis源码里其实已经提供了一个初始化脚本,在安装目录下的utils里面有个redis_init_script即是。
对该脚本进行修改
添加一句 # chkconfig: 2345 90 10
分别修改EXEC(redis-server的路径)、CLIEXEC(redis-cli的路径)、CLIEXEC(守护进行方式的pid所在文件路径,要和配置文件中的pidfile一致)、CONF(刚才复制的配置文件路径)的值
#!/bin/sh# # chkconfig: 2345 90 10 REDISPORT=6379 EXEC=/usr/local/src/redis-3.2.8/src/redis-server CLIEXEC=/usr/local/src/redis-3.2.8/src/redis-cli CLIEXEC=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
复制redis_init_script脚本到/etc/init.d/redisd
cp /usr/local/src/redis-3.2.8/utils/redis_init_script /etc/init.d/redisd
在/etc/init.d下的脚本都是可以在系统启动是自动启动的服务,配置redis随系统启动
chkconfig redisd on
操作命令
> service redisd start > service redisd stop > service redisd status > service redisd restart centos7以上 > systemctl start redisd > systemctl stop redisd > systemctl status redisd > systemctl restart redisd
Ubuntu 下安装
在 Ubuntu 系统安装 Redi 可以使用以下命令:
$sudo apt-get update $sudo apt-get install redis-server
启动 Redis
redis-server
查看 redis 是否启动?
redis-cli
以上命令将打开以下终端:
redis 127.0.0.1:6379>
127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。
redis 127.0.0.1:6379> ping PONG
Redis数据类型(简单操作)
五种数据类型:
数据类型 | 存储的值 | 读写能力 |
---|---|---|
String | 可以使用字符串、整数或浮点数,统称为元素 | 对字符串操作,对整数类型加减 |
List | 一个序列集合且每个节点都包好了一个元素 | 序列两端推入、或弹出元素,修剪、查找或移除元素 |
Set | 各不相同的元素 | 从集合中插入或者删除元素 |
Hash | 有Key-value的散列祖,其中key是字符串,value是元素 | 按照key进行增加删除 |
Sort Set | 带分数的score-value有序集合,其中score为浮点,value为元素 | 集合插入,按照分数范围查找 |
String类型操作:
设置值 set key value
string1 为 key,zhaoduo为value
> set string1 zhaoduo
取出值 get key
> get string1
设置整数 set key value
> set string2 2
整数自增 执行完之后string会自增1
incr value
> incr string2 # z再取出值得时候会自增1 > get string2
整数减 后面的数代表减几,自增的时候不能跟这个数
decrby key value
> decrby string2 3 #集合第四步的操作,这时候取出值会减3 就是0 > get string2
List类型操作
List类型是有序的列表,允许重复,List不要求里面的元素是唯一的
说明:可以结合栈和队列的含义理解,一直lpush(rpush),取值的时候一直lpop(rpop)是栈(后进先出)。如果一直lpush(rpush),取值的时候一直rpop(lpop)就是队列(先进先出)
从左边push进一个值 (设置一个值) lpush key value
> lpush List1 value1
从右边push进一个值 (设置一个值) rpush key value
> rpush List1 value2
从左边pop一个值 (取出一个值) lpop key
> lpop List1 #这里获得的值是value1
从右边pop一个值 (取出一个值) rpop key
> rpop List1 #这里获取的值是value2
获取list的长度,llen key
> llen List1
Set类型操作
Set类型是无序的列表且不允许重复
添加一个值,sadd key value
set1为key 12为value
> sadd set1 12
获取set长度,scard key
> scard set1
查看set里面是否存在某个value,sismember key value
set1为key,13为value
> sismember set1 13
删除一个值,srem key value
> srem set1 13
Hash类型操作(又称:散列)
Hash只要求键不一样,就是不同的条数
数据结构图:
key->key1 -> value(string/int/float)
key2 -> value(string/int/float)
key3 -> value(string/int/float)
key4 -> value(string/int/float)
插入 hset key key value
如果键重复,值会被覆盖
> hset hash1 key1 12
获取 hget key key
> hget hash1 key1
查看长度 hlen key
> hlen key
一次性获取多个值 hmget key key1 key2
> hmget hash1 key1 key2
Sort set类型操作(又称:有序分数集)
1. 存储和hash一样,都是一个映射。存储的是分数与元素的映射。可以看出是排行榜。value必须是全局唯一
数据结构:score 是浮点型
key->score(10.1) value(string/int/float) rank:1
score(9.1) value(string/int/float) rank:0
score(11.2) value(string/int/float) rank:2
如果两个元素的score一样,按照字节顺序排列先后
增加 zadd key score value
> zadd zset1 10.1 val1
查看个数 zcard key
> zcard zset1
查看排名 zrange key sort widthscores
# 表示按照从o到2查看zset包括scores值 > zrange zset1 0 2 widthscores
查看某个value排名 zrand key value
> zrank zset1 val2