文章教程

Redis安装配置与常用命令

5/9/2018 10:35:29 PM 人评论 次浏览

Redis简介

 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
 它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。
 内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
   简言之,Redis是一种面向“键/值”对数据类型的内存数据库,可以满足我们对海量数据的快速读写需求。
   Redis是一款NoSQL产品。
   官网:http://www.redis.io
   或者:http://redis.cn/

Redis的特点

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的k-v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave主从模式的数据备份。

Redis的优势

性能极高——Redis读的速度为11w/s,写的速度为8.1w/s。
丰富的数据类型——Redis支持二进制案例的Strings,Lists,Hashes,Sets即Ordered Sets数据类型操作。
原子性——Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
丰富的特性——Redis还支持public/subscribe,通知,key过期等特性。

Redis应用

应用在高并发和实时请求的场景,eg新浪微博
hash:关注列表,粉丝列表
string:微博数,粉丝数
(避免使用select count(*) from...)
sorted set:
TopN,热门微博
还有github,
stackoverflow也
用到了redis

Redis安装配置

Redis安装

windows下直接解压即可使用,主要说明Linux下的安装方式 :

解压:
tar -zxvf soft/redis-3.2.0.tar.gz -C app/
重命名:
mv app/redis-3.2.0/ app/redis
编译:
make
安装:
make install PREFIX=/home/uplooking/app/redis

Redis配置

初始配置

  修个redis.conf中的配置项
  bind uplooking01
  daemonize yes(后台运行)
  logfile /opt/redis-3.2.0/logs/redis.log(日志文件,目录必须存在)

启动服务

  make完成之后,在redis-3.2.0/src目录下会出现编译后的redis服务器程序redis-server,还有用于测试的客户端程序redis-cli。
  redis-3.2.0]$ src/redis-server redis.conf
  当然,如果再执行了make install则会在指定安装目录下生成一个bin目录,同时也会有相关的命令用于操作Redis.

启动客户端

  redis-3.2.0]$ src/redis-cli -h localhost -p 6379

关闭服务

  ps -ef | grep redis
  找到进程id后直接kill -9就可以了。

Redis配置查看

Redis的配置文件位于Redis的安装目录之下,文件名为redis.conf。可以通过config命令来查看或设置配置项。

查看
   语法,Redis config命令格式如下:
   redis localost:6379> config get config_set_name
   eg: redis localost:6379> config get loglevel
   1) "loglevel"
   2) "notice"
   使用*号获取所有配置项:redis localost:6379> config get *

编辑
  可以通过修改redis.conf文件或使用config set命令来修改配置
  基本语法:
  redis localost:6379> config set conf_setting_name new_value
  eg: redis localost:6379> config set loglevel "warning"
      redis localost:6379> config get loglevel
  1) "loglevel"
  2) "warning"  -->对当前服务有效,之后当服务重启之后,才会失效
Redis操作

string(字符串)

   string是redis最基本的类型,你可以理解成与memcached一模一样的类型,一个key对应一个value。
   string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
   string类型是Redis最基本的数据类型,一个键最大能存储512MB。
实例
   redis 127.0.0.1:6379> SET name "redis.net.cn"
OK
   redis 127.0.0.1:6379> GET name
"redis.net.cn"
  在以上实例中我们使用了Redis的SET和GET命令。键为name,对应的值为redis.net.cn。
注意:一个键最大能存储512MB。

常见的string操作命令如下:

set key value          设置指定key的值(会覆盖无视数据类型)
                set name yaohuiying

get key             获取指定key的值
                get name

getrange key start end     返回key中字符串值的子字符
                getrange name 1 4
                注意:字符串索引从0开始,获取索引片段[start, end],包头包尾

getset key value        将给定key的值设为value,并返回key的旧值(old value)
                getset name liuxiangqian
                返回值为yaohuiying

mget key1 [key2..]       获取所有(一个或多个)给定key的值
                mget name name1

setex key seconds value     将值value关联到key,并将key的过期时间设为seconds(以秒为单位)

setnx key value         只有在key不存在时设置key的值
                作用同set,唯一和set的区别在于,只有当key不存在的时候,才进行设置,
                而key存在,无法完成覆盖

setrange key offset value    用value参数覆写给定key所储存的字符串值,从偏移量offset开始
                对key的原先的value进行局部覆盖,从offset偏移量开始,
                value有多长,就覆盖多长

strlen key           返回key所储存的字符串值的长度

mset key value [key value ...]   同时设置一个或多个key-value对

MSETNX key value [key value ...]  同时设置一个或多个key-value对,当且仅当所有给定key都不存在

psetex key milliseconds value    这个命令和SETEX命令相似,但它以毫秒为单位设置key的生存时间,
                  而不是像SETEX命令那样,以秒为单位

incr key              将key中对应储存的数字值增一
                  对key对应的value进行+1,但是value必须是数字类型的字符串

INCRBY key increment        将key所储存的值加上给定的增量值(increment)
                  之定义的步长

incrbyfloat key increment      将key所储存的值加上给定的浮点增量值(increment)

decr key              将key中储存的数字值减一

decrby key decrement key      所储存的值减去给定的减量值(decrement)

append key value          如果key已经存在并且是一个字符串,
                  APPEND命令将value追加到key原来的值的末尾