Redis(Windows)安装与使用

Redis(Windows)安装与使用

转自:http://blog.csdn.NET/enzoy/article/details/42461685
Redis Windows 下安装
下载地址:https://github.com/dmajkic/redis/downloads 
下载下来的包里有两个,一个是32位的,一个是64位的。

把这个文件夹复制到其它地方,比如D:\redis 目录下。
打开一个cmd窗口  使用cd命令切换目录到d:\redis  运行 redis-server.exe redis.conf  
如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:

 

 

这时候别启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 出现下图

 


 

redis.conf配置文件相关说明

 

Redis Linux下安装
Redis的代码遵循ANSI-C编写,可以在所有POSIX系统(如Linux, *BSD, Mac OS X, Solaris等)上安装运行。而且Redis并不依赖任何非标准库,也没有编译参数必需添加。redis的安装出奇的简单,这可能也是他风靡的一个原因,让人很容易上手,不像某些东西,编译阶段就能让人完全绝望。
安装命令:

$ wget http://download.redis.io/releases/redis-2.8.19.tar.gz
$ tar xzf redis-2.8.19.tar.gz
$ cd redis-2.8.19
$ make

编译
需要说明的事,redis的安装非常简单,已经有现成的Makefile文件,直接运行make命令即可。

Redis 由四个可执行文件:redis-benchmark、redis-cli、redis-server、redis-stat 这四个文件,加上一个redis.conf就构成了整个redis的最终可用包。它们的作用如下:


redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况

现在就可以启动redis了,redis只有一个启动参数,就是他的配置文件路径。
Run Redis with:
$ src/redis-server
You can interact with Redis using the built-in client:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

注意,默认复制过去的redis.conf文件的daemonize参数为no,所以redis不会在后台运行,这时要测试,我们需要重新开一个终端。修改为yes则为后台运行redis。另外配置文件中规定了pid文件,log文件和数据文件的地址,如果有需要先修改,默认log信息定向到stdout.

下面是redis.conf的主要配置参数的意义:

daemonize:是否以后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

这时你可以打开一个终端进行测试了,配置文件中默认的监听端口是6379
我们可以开启一个Redis客户端进行测试
[root@SNDA-192-168-1-114 ~]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@SNDA-192-168-1-114 ~]# redis-server /etc/redis.conf
[root@SNDA-192-168-1-114 ~]# redis-cli

redis 127.0.0.1:6379> quit

 


Linux 下安装遇到的问题

1.make test 时出现:
You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1


解决参考: http://www.cnblogs.com/nexiyi/p/3454898.html(在另一台服务器上安装,上面的方法还是不能安装.....)------这里准备在之前安装成功的机器上再建一个Slave测试吧,不知道另一台机器为什么无法安装,可能是权限的问题。

发现即使报了错,但是启动redis的时候确实没问题的,既然这样,就先用吧,这样就可以用两台机器做主从测试了~~~~,继续!!

 

 

 

Redis 常用命令
1. 手动抓取快照,save或者bgsave(后台异步)
redis> save
OK
redis> bgsave
Background saving started

 

 

2. 获取某个key的类型
redis> type mylist
list

 

 

3. 匹配所有符合模式的key,*代表所有

redis> keys *
1) "name"
2) "mylist"

 

 

4. 随机返回一个key
redis> randomkey
"mylist"

 

 

5. 重命名一个key
redis> rename name myname
OK
redis> keys *
1) "myname"
2) "mylist"

6. list的一些操作

6.1 将一个值添加到列表的首部

redis> rpush company taobao
(integer) 1
redis> lrange company 0 1
1)    "taobao"
6.2 将一个值添加到列表的尾部
redis> lpush company sina
(integer) 2
redis> lrange company 0 1
1) "sina"
2) "taobao"
6.3 获得列表长度
redis> llen company
(integer) 2
6.4 返回list中某个范围的值,模式LRANGE key start end
redis> lrange company 1 2
1) "taobao"
2) "sohu"
6.5 只保留list中某个范围的值,模式LTRIM key start end
redis> lrange company 0 2
1) "sina"
2) "taobao"
3) "sohu"
redis> ltrim company 0 1
OK
redis> lrange company 0 2
1) "sina"
2) "taobao"
6.6 获得list中某个索引号的值,模式LINDEX key index
redis> lrange company 0 4
1) "baidu"
2) "sohu"
3) "sina"
4) "taobao"
redis> lindex company 2
"sina"
redis> lindex company 0
"baidu"
6.7 设置list中某个索引位置的值,模式LSET key index value
redis> lrange company 0 4
1) "baidu"
2) "sohu"
3) "sina"
4) "taobao"
redis> lset company 2 google
OK
redis> lrange company 0 4
1) "baidu"
2) "sohu"
3) "google"
4) "taobao"
6.8 用lpop获取list中索引最小的值(头部值),rpop获取list中索引最大的值(尾部值),注意获取之后list中就不再有这个值了。
redis> lrange company 0 4
1) "baidu"
2) "sohu"
3) "google"
4) "taobao"
redis> lpop company
"baidu"
redis> rpop company
"taobao"
redis> lrange company 0 4
1) "sohu"
2) "google"
特别注意:以上这些命令中的start或者index都是从0开始计算的

 


7. 集合的一些操作


7.1 向集合中增加一个元素,模式SADD key member
redis> sadd class kongxing
(integer) 1
redis> type class
set
7.2 列出集合中的所有元素,注意元素是无序的,模式SMEMBERS key
redis> smembers class
1) "banqiao"
2) "rulong"
3) "changjie"
4) "kongxing"
7.3 从集合中删除一个元素,模式SREM key member
redis> srem class kongxing
(integer) 1
redis> smembers class
1) "banqiao"
2) "rulong"
3) "changjie"
7.4 返回集合大小,模式SCARD key
redis> scard class
(integer) 3
7.5 判断某个值是否在集合中,模式SISMEMBER key member
redis> sismember class kongxing
(integer) 0—表示没有’kongxing’这个元素
redis> sismember class rulong
(integer) 1—表示存在’rulong’这个元素
7.6 获取多个集合的交集元素,模式SINTER key1 key2 ... keyN
redis> smembers dba
1) "rulong"
2) "changjie"
redis> smembers class
1) "banqiao"
2) "rulong"
3) "kongxing"
4) "changjie"
redis> sinter class dba
1) "rulong"
2) "changjie"
redis> sinter dba class
1) "rulong"
2) "changjie"

---注意:取交集,所以与各个key的位置无关 

 


8.其他命令

8.1 启动 Redis 服务
src/redis-server或者src/redis-server redis.conf
src/redis-server redis.conf 1>log.log 2>errlog.log
1为标准输出,2为错误输出
8.2 将 Redis 作为 Linux 服务随机启动
vi /etc/rc.local, 加入代码:
/root/install/redis-2.4.9/src/redis-server
8.3 客户端连接
src/redis-cli
8.4 停止redis服务:
src/redis-cli shutdown

8.5 当前的key是否存在

exists larry

(integer) 0
8.6 删除当前key
del lv

8.7设置过期时间
expire larry 10
(integer) 1
8.8移动larry键值对到ad4数据库
move larry ad4
(integer) 1
8.9移除当前key的过期时间
persist lv
(integer) 1
8.10 测试连接是否还在
ping
PONG
8.11打印
echo name
"larry"
8.11数据库切换
select ad4databank
OK
8.12退出连接
quit
8.13当前数据库中key的数量
dbsize
(integer) 12
8.14服务器基本信息
info
8.15实时转储收到的请求
monitor
8.16获取服务器的参数配置
config get
8.17清空当前数据库
flushdb
8.18清除所有数据库
flushall

 

Redis 性能
下面是官方的bench-mark数据: 
The test was done with 50 simultaneous clients performing 100000 requests. 
The value SET and GET is a 256 bytes string.
The Linux box is running Linux 2.6, it’s Xeon X3320 2.5Ghz.
Text executed using the loopback interface (127.0.0.1).
Results: about 110000 SETs per second, about 81000 GETs per second.
更多详细数据请见官方bench-mark page(http://code.google.com/p/redis/wiki/Benchmarks

redis安装使用

转自:http://blog.csdn.Net/zhang_yanan/article/details/25712033
1 前言
redis是一个高性能的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。从盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

2 文档目的
供运维人员了解学习简单的redis操作,个人如果想要深入了解redis,可自行深入学习了解。

3 状态及类型
下载redis安装包redis-2.8.8.tar.gz

3.1 编译安装
cd /usr/local/src/

tar zxvf redis-2.8.8.tar.gz

cd redis-2.8.8

make PREFIX=/home/rediscmcc install

在安装redis成功后,你将可以在/home/rediscmcc看到一个bin的目录,里面包括了以下文件:

 redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-server

文件解释:

文件
 功能
 
redis-benchmark
 Redis性能测试工具,测试redis在你的系统及配置下的读写性能
 
redis-check-aof
 更新日志检查
 
redis-check-dump
 检查本地数据库文件
 
redis-cli
 Redis命令行操作工具。也可以用telnet根据其纯文本协议来操作
 
redis-server
 Redis服务器的daemon启动程序
 

 

3.2 设置配置文件参数
创建接下来要使用的目录:

Cd /home/rediscmcc

mkdir data

mkdir logdir

mkdir config

cp redis.conf /home/rediscmcc/config/  Copy一份配置文件

cd /home/rediscmcc/config/

vi redis.conf  设置配置文件中参数

修改一下配置

daemonize yes

 

pidfile /home/rediscmcc/data/redis.pid

 

port 6379

 

logfile "/home/rediscmcc/logdir/redis.log"

 

dbfilename dump.rdb

 

dir /home/rediscmcc/data

 

# maxmemory <bytes>

# maxmemory-policy volatile-lru
 

注:配置文件中名词解释见下文附件。

3.3 简单运行redis
./redis-server /home/rediscmcc/config/redis.conf

3.4 查看redis服务是否启动成功,端口6379
netstat -tlunp

3.5 测试使用redis
Redis客户端指定端口进入redis

./redis-cli -p 6379

可以使用set ,get,quit等简单命令测试是否可以正常使用

关闭redis:

Redis-cli shutdown

关闭指定端口的redis-server

Redis-lic -p 6379 shutdown

4 将redis做成一个服务
注:此处可做可不做。当两个redis数据库在同一台服务器上运行时,容易造成混淆现象。

4.0.1 复制脚本到/etc/rc.d/init.d目录
按以上步骤安装Redis时,其服务脚本位于:

/usr/local/src/redis-2.8.8/utils/redis_init_script

必须将其复制到/etc/rc.d/init.d的目录下:

cp /usr/local/src/redis/utils/redis_init_script /etc/rc.d/init.d/redis

以下将redis_init_script复制到/etc/rc.d/init.d/,同时易名为redis。
如果这时,我们直接注册服务:

chkconfig --add redis

将报以下错误:

引用redis服务不支持chkconfig,为此我们需要更改redis的脚本。

4.0.2 更改redis的服务脚本 
#vim /etc/rc.d/init.d/redis

看到以下的文件内容:

#!/bin/bash

#chkconfig:  2345 90 10

# description:  Redis is a persistent key-value database

# Simple Redis init.d script conceived to work on Linux systems

# as it does use of the /proc filesystem.

 

REDISPORT=6379

EXEC=/home/rediscmcc/bin/redis-server

CLIEXEC=/home/rediscmcc/bin/redis-cli

 

PIDFILE=/home/rediscmcc/data/redis_${REDISPORT}.pid

CONF="/home/rediscmcc/config/${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

 
 

 

再次执行

chkconfig --add redis

chkconfig --list redis 查看

redis           0:off   1:off   2:on    3:on    4:on    5:on    6:off

以上redis文件中所修改地方的解释:

#chkconfig:  2345 90 10 添加注册redis,冒号后边有空格

# description:  Redis is a persistent key-value database

上边的这行信息必须添加,不添加执行不成功,原因暂时不知道。

设置EXEC、CLIEXEC、PIDFILE、CONF参数对应的路径,一定要和前边安装时设定的路径保持一致。

 $EXEC $CONF & 后台运行

4.1 服务启动方式启动redis
[root@localhost init.d]# service redis start

Starting Redis server...

[4223] 08 May 17:30:04.706 # Fatal error, can't open config file '/home/rediscmcc/config/6379.conf'

启动过程中找不到6379.conf文件

解决方法:

Copy redis配置文件到config目录下

先备份config下的redis.conf文件

Cp /home/rediscmcc/config/redis.conf /home/rediscmcc/config/redis.conf.bak

Mv /home/rediscmcc/config/redis.conf /home/rediscmcc/config/6379.conf

修改6379.conf配置文件中信息,保持和/etc/re.d/init.d/redis中文件设置保持一致

只需要修改以下配置

pidfile /home/rediscmcc/data/redis_6379.pid

 
 

启动redis程序

# service redis start

Starting Redis server...

[root@localhost src]# service redis stop

Stopping ...

Redis stopped

5 Redis主从复制
5.1 原理:
Reids的主从复制功能很强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构

5.2 Redis主从复制的特点
1.master可以有多个slave

2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构

3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。

4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求,比如sort操作可以使用slave来处理。也可以用来做简单的数据冗余

5.可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。

5.3 redis主从复制过程
当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连 接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命 令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。

5.4 Redis主从复制配置
5.5 主从配置方式
主:10.15.62.115  端口:6379   目录名:redisma

从:10.15.62.115 端口:16379  目录名:redissa

l 主从配置区别如下:

< pidfile /home/redisma/data/redis.pid

> pidfile /home/redissa/data/redis.pid

 

< port 6379

> port 16379

 

< logfile "/home/redisma/logdir/6379.log"

> logfile "/home/redissa/logdir/16379.log"

 

< dir /home/redisma/data

> dir /home/redissa/data

 

< # slaveof <masterip> <masterport>

> slaveof 10.15.62.238 6379
 

 

l 分别启动主从redis,测试数据同步

主redis:

[root@localhost redisma]# bin/redis-cli -p 6379
      127.0.0.1:6379> set name abc
      OK
      127.0.0.1:6379> get name
      "abc"
      127.0.0.1:6379>

 

从redis:

      [root@localhost redissa]# bin/redis-cli -p 16379
      127.0.0.1:16379> get name
      "abc"
      127.0.0.1:16379> 
 

l 默认是读写分离的

在从redis:

     [root@localhost redisma]# bin/redis-cli -p 16379

     127.0.0.1:16379> set name 123

     (error) READONLY You can't write against a read only slave.
 

 

5.6 主从切换
l 模拟主redis停止工作,切换到从redis(从redis默认为只读)

停止主redis

[root@localhost redisma]# bin/redis-cli -n 6379 shutdown

[root@localhost redisma]# bin/redis-cli -p 6379

Could not connect to Redis at 127.0.0.1:6379: Connection refused

not connected>

 

将从redis设成主redis

[root@localhost redissa]# bin/redis-cli -p 16379 slaveof NO ONE

OK

 

测试从redis是否切换从主redis

[root@localhost redissa]# bin/redis-cli -p 16379

127.0.0.1:16379> set name 123

OK

127.0.0.1:16379> get name

"123"

127.0.0.1:16379>
 

 

l 原来的主redis恢复正常了,要重新切换回去

1) 将现在的主redis的数据进行保存

[root@localhost redissa]# bin/redis-cli -p 16379

127.0.0.1:6380> get name

"abc"

127.0.0.1:6380> set name 123

OK

127.0.0.1:6380> get name

"123"

127.0.0.1:6380> save

OK

127.0.0.1:6380> get name

"123"

127.0.0.1:6380> 

 

2) 将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录

3) 启动原来的主redis

4) 在现在的主redis中切换

[root@localhost redisssa]# bin/redis-cli -p 16379 slaveof 10.15.62.238 6379

OK
 

6 附件(配置文件名词解释)
1、默认不是以守护进程的方式运行,修改此配置项,使用yes是以后台daemon方式运行

daemonize yes redis


2、当redis以守护进程运行时,默认会生产pid文件,指定pidfile文件路径;

pidfile /home/rediscmcc/data/redis.pid


3、redis监听端口;

port 6379


4、指定log日志文件和数据库文件存放目录路径

logfile "/home/rediscmcc/logdir/redis.log"

指定数据库文件存放目录;

dir /home/rediscmcc/data


4. 绑定的主机地址

bind 127.0.0.1


5.请求超时时间,如果指定为0,表示关闭该功能

timeout 300


6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

loglevel verbose


7. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

logfile stdout


8. 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id

databases 16


9. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

save <seconds> <changes>

Redis默认配置文件中提供了三个条件:

save 900 1

save 300 10

save 60 10000

分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

rdbcompression yes


11. 指定本地数据库文件名,默认值为dump.rdb

dbfilename dump.rdb


12. 指定本地数据库存放目录

dir ./


13. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

slaveof <masterip> <masterport>


14. 当master服务设置了密码保护时,slav服务连接master的密码

masterauth <master-password>


15. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭

requirepass foobared


16. 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

maxclients 128


17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

maxmemory <bytes>


18. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

appendonly no


19. 指定更新日志文件名,默认为appendonly.aof

appendfilename appendonly.aof


20. 指定更新日志条件,共有3个可选值:

no:表示等操作系统进行数据缓存同步到磁盘(快)

always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)

everysec:表示每秒同步一次(折衷,默认值)

appendfsync everysec


21. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)

vm-enabled no

22. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

vm-swap-file /tmp/redis.swap


23. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0

vm-max-memory 0


24. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值

vm-page-size 32


25. 设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。

vm-pages 134217728


26. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4

vm-max-threads 4


27. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启

glueoutputbuf yes

28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

hash-max-zipmap-entries 64

hash-max-zipmap-value 512

29. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)

activerehashing yes

30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件

include /path/to/local.conf
 

 

Redis常用命令

转自:http://blog.csdn.net/ithomer/article/details/9213185
Redis常用命令集
1)连接操作命令

quit:关闭连接(connection)
auth:简单密码认证
help cmd: 查看cmd帮助,例如:help quit


2)持久化

save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务

3)远程服务控制

info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器

4)对value操作的命令

exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个
keyrename(oldname, newname):重命名key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
select(index):按索引查询
move(key, dbindex):移动当前数据库中的key到dbindex数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key

5)String

set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value
getset(key, value):给名称为key的string赋予上一次的value
mget(key1, key2,…, key N):返回库中多个string的value
setnx(key, value):添加string,名称为key,值为value
setex(key, time, value):向库中添加string,设定过期时间time
mset(key N, value N):批量设置多个string的值
msetnx(key N, value N):如果所有名称为key i的string都不存在
incr(key):名称为key的string增1操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减1操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串

6)List

rpush(key, value):在名称为key的list尾添加一个值为value的元素
lpush(key, value):在名称为key的list头添加一个值为value的 元素
llen(key):返回名称为key的list的长度
lrange(key, start, end):返回名称为key的list中start至end之间的元素
ltrim(key, start, end):截取名称为key的list
lindex(key, index):返回名称为key的list中index位置的元素
lset(key, index, value):给名称为key的list中index位置的元素赋值
lrem(key, count, value):删除count个key的list中值为value的元素
lpop(key):返回并删除名称为key的list中的首元素
rpop(key):返回并删除名称为key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

7)Set

sadd(key, member):向名称为key的set中添加元素member
srem(key, member) :删除名称为key的set中的元素member
spop(key) :随机返回并删除名称为key的set中一个元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名称为key的set的基数
sismember(key, member) :member是否是名称为key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
smembers(key) :返回名称为key的set的所有元素
srandmember(key) :随机返回名称为key的set的一个元素

8)Hash

hset(key, field, value):向名称为key的hash中添加元素field
hget(key, field):返回名称为key的hash中field对应的value
hmget(key, (fields)):返回名称为key的hash中field i对应的value
hmset(key, (fields)):向名称为key的hash中添加元素field 
hincrby(key, field, integer):将名称为key的hash中field的value增加integer
hexists(key, field):名称为key的hash中是否存在键为field的域
hdel(key, field):删除名称为key的hash中键为field的域
hlen(key):返回名称为key的hash中元素个数
hkeys(key):返回名称为key的hash中所有键
hvals(key):返回名称为key的hash中所有键对应的value
hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

 

Redis高级应用
1、安全性
    设置客户端连接后进行任何操作指定前需要密码,一个外部用户可以再一秒钟进行150W次访问,具体操作密码修改设置redis.conf里面的requirepass属性给予密码,当然我这里给的是primos 
之后如果想操作可以采用登陆的时候就授权使用:
sudo /opt/Java/redis/bin/redis-cli -a primos
或者是进入以后auth primos然后就可以随意操作了


2、主从复制
做这个操作的时候我准备了两个虚拟机,ip分别是192.168.15.128和192.168.15.133
    通过主从复制可以允许多个slave server拥有和master server相同的数据库副本
具体配置是在slave上面配置slave
slaveof 192.168.15.128 6379
masterauth primos
如果没有主从同步那么就检查一下是不是防火墙的问题,我用的是ufw,设置一下sudo ufw allow 6379就可以了
这个时候可以通过info查看具体的情况
 
3、事务处理
redis对事务的支持还比较简单,redis只能保证一个client发起的事务中的命令可以连续执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务的上下文,连接后续命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。
比如我下面的一个例子
set age 100
multi
set age 10
set age 20
exec
get age --这个内容就应该是20
multi
set age 20
set age 10
exec 
get age --这个时候的内容就成了10,充分体现了一下按照队列顺序执行的方式
discard  取消所有事务,也就是事务回滚
不过在redis事务执行有个别错误的时候,事务不会回滚,会把不错误的内容执行,错误的内容直接放弃,目前最新的是2.6.7也有这个问题的
乐观锁
watch key如果没watch的key有改动那么outdate的事务是不能执行的


4、持久化机制 
redis是一个支持持久化的内存数据库
snapshotting快照方式,默认的存储方式,默认写入dump.rdb的二进制文件中,可以配置redis在n秒内如果超过m个key被修改过就自动做快照
append-only file aof方式,使用aof时候redis会将每一次的函 数都追加到文件中,当redis重启时会重新执行文件中的保存的写命
令在内存中。
5、发布订阅消息 sbusribe publish操作,其实就类似linux下面的消息发布
6、虚拟内存的使用
可以配置vm功能,保存路径,最大内存上线,页面多少,页面大小,最大工作线程
临时修改ip地址ifconfig eth0 192.168.15.129


redis-cli参数

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>    Server hostname (default: 127.0.0.1)
  -p <port>        Server port (default: 6379)
  -s <socket>      Server socket (overrides hostname and port)
  -a <password>    Password to use when connecting to the server
  -r <repeat>      Execute specified command N times
  -i <interval>    When -r is used, waits <interval> seconds per command.
                   It is possible to specify sub-second times like -i 0.1
  -n <db>          Database number
  -x               Read last argument from STDIN
  -d <delimiter>   Multi-bulk delimiter in for raw formatting (default: \n)
  -c               Enable cluster mode (follow -ASK and -MOVED redirections)
  --raw            Use raw formatting for replies (default when STDOUT is not a  tty)
  --latency        Enter a special mode continuously sampling latency
  --slave          Simulate a slave showing commands received from the master
  --pipe           Transfer raw Redis protocol from stdin to server
  --bigkeys        Sample Redis keys looking for big keys
  --eval <file>    Send an EVAL command using the Lua script at <file>
  --help           Output this help and exit
  --version        Output version and exit

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli get mypasswd
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:
  redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  (Note: when using --eval the comma separates KEYS[] from ARGV[] items)

 

常用命令:

1) 查看keys个数

keys *      // 查看所有keys

keys prefix_*     // 查看前缀为"prefix_"的所有keys


2) 清空数据库
flushdb   // 清除当前数据库的所有keys

flushall    // 清除所有数据库的所有keys

0
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: RedisWindows 版本使用安装步骤如下: 1. 下载 RedisWindows 版本安装包。可以从 Redis 的官网(https://redis.io/download)下载最新版的 Redis for Windows。 2. 解压 Redis 安装包,将文件解压到一个目录下。 3. 打开 cmd 窗口,进入 Redis安装目录。 4. 启动 Redis 服务器。在 cmd 窗口中输入 redis-server.exe redis.windows.conf,即可启动 Redis 服务器。 5. 打开另一个 cmd 窗口,进入 Redis 安装目录。 6. 启动 Redis 客户端。在 cmd 窗口中输入 redis-cli.exe,即可启动 Redis 客户端。 7. 测试 Redis 是否正常工作。在 Redis 客户端中输入 ping 命令,如果返回 PONG,则表示 Redis 已经安装成功并且可以正常工作。 注意:在 Windows 环境下,Redis 不支持后台运行模式,因此在启动 Redis 服务器时必须保持 cmd 窗口一直打开。如果想要在后台运行 Redis,可以考虑使用虚拟机或者 Linux 环境下的 Redis。 ### 回答2: Redis是一个开源、高性能的键值数据库存储系统,它支持数据持久化,并通过提供多种数据结构,如字符串、哈希表、列表、集合等,使它在性能和扩展性方面得到广泛应用。本篇文章将介绍如何在Windows操作系统上安装使用Redis。 1、下载Redis for Windows 首先下载Windows版本的Redis,可以从官网上下载: https://redis.io/download 2、解压Redis 将下载的Redis压缩包解压到本地目录,如D:\Redis。 3、启动redis-server 进入解压目录,打开cmd窗口,进入Redis所在的目录路径,如: D:\Redis> 在此路径下输入redis-server,如下所示: D:\Redis>redis-server 此时Redis已经启动,如下所示: D:\Redis>redis-server 12132:M 18 Aug 23:08:11.710 * Increased max number of open files to 10032 (it was originally set to 1024). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.2.100 .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 12132 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 4、使用redis-cli连接Redis 打开另一个cmd窗口,进入Redis所在的目录路径,如: D:\Redis> 在此路径下输入redis-cli,如下所示: D:\Redis>redis-cli 此时Redis-cli已经连接到Redis,如下所示: D:\Redis>redis-cli 127.0.0.1:6379> 5、在Redis中执行命令 在Redis-cli连接中执行一些命令,例如设置和获取一个键值对: 127.0.0.1:6379> set name Redis OK 127.0.0.1:6379> get name "Redis" 6、停止Redis服务 在Redis-cli窗口中输入shutdown命令,如下所示: 127.0.0.1:6379> shutdown (not connected)> 此时,Redis服务已停止。 在Windows操作系统上安装Redis非常简单,只需要下载并解压,即可在本地机器上运行。使用Redis CLI可以轻松地管理Redis数据,如读取、写入和删除Redis键值等。Redis的高性能、数据结构和数据持久化特性,使得它在Web应用程序的缓存和消息队列中非常受欢迎,同时也是处理大规模数据的好工具。 ### 回答3: Redis是一个开源的内存数据结构存储系统,可以用作数据库、缓存、消息队列等。它支持多种数据结构,如字符串、哈希表、列表、集合和有序集合,并提供了丰富的命令来操作这些数据结构。Redis有一个非常活跃的社区,在互联网行业广泛应用,被许多大型网站用作缓存和消息队列。 Redis支持多种操作系统平台,包括Windows安装Redis Windows版需要以下步骤: 1. 下载RedisRedis官网(http://redis.io/)下载最新的稳定版本的RedisWindows版本的Redis已经被编译好了,直接下载可执行文件即可。 2. 解压Redis 将下载好的Redis压缩包解压到指定文件夹,例如C:\Redis。 3. 配置Redis Redis有一个配置文件redis.conf,它位于Redis安装目录下,可以使用文本编辑器进行编辑。如果不需要自定义配置,可以直接使用默认配置文件。如果需要自定义配置,可以打开redis.conf文件,进行修改。 4. 启动RedisRedis文件夹下,Shift+右键,选择“在此处打开命令窗口”,输入redis-server.exe redis.conf即可启动Redis。如果启动成功,命令行界面显示Redis成功运行,监听端口为6379。 5. 测试Redis 打开另一个命令行窗口,输入redis-cli.exe,连接Redis。输入ping命令,如果响应为“PONG”,则说明Redis连接正常。尝试一些其他命令,如set、get、incr等,看看是否正常工作。 以上就是Redis Windows版的安装使用方法。需要注意的是,RedisWindows下的性能可能不如Linux下的性能,因为Windows不支持Linux下的一些系统调用。另外,Redis使用内存存储数据,如果数据量过大,需要注意内存的使用情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值