1.Redis浅析理解
redis以字典结构存储数据,类似dict[key]="value",这种结构可以根据key值获取或者删除字典项,redis的键值可以是字符串,也可以是其他的数据类型,包括:散列,列表,集合
有序集合,
redis所有数据都存储到内存中,因此读取速度非常快,同时也支持持久化,防止程序终止后内存数据丢失,可以异步写入数据到磁盘,同时不影响程序的运行。
作为缓存系统,redis还可以限制内存的大小,当达到最大内存限制时根据一定的的规则自动淘汰不需要的键。
redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易实现高性能的优先级队列。
以上是文档中了解的,具体的话未实践,下面只能简单写写,自己入门级学习的心得。
有一点说明下,redis的小版本号,偶数代表稳定版,奇数代表的非稳定版,大家可以注意下。
2.安装Redis
学习使用Cent OS系统,虚拟机搭建环境安装REDIS。
root: wget http://download.redis.io/redis-stable.tar.gz
如果不能下载就手动到官网下载吧:https://redis.io/download/
tar -xvf redis-stable.tar.gz
cd redis-stable
cd src
make all
由于redis是由C语言编写的,下载下来的源码直接执行make,编译源代码即可。
[root@ src]# make all
Hint: It's a good idea to run 'make test' ;)
[root@ src]# make install
Hint: It's a good idea to run 'make test' ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL
3.启动与停止Redis
-rwxr-xr-x. 1 root root 7.5M Dec 7 23:58 redis-server --通常我们说的redis 服务端,
-rwxr-xr-x. 1 root root 5.5M Dec 7 23:58 redis-cli --通常我们说的客户端,命令行客户端,对于学习redis很重要
-rwxr-xr-x. 1 root root 5.4M Dec 7 23:58 redis-benchmark --redis性能测试工具,暂未研究
-rwxr-xr-x. 1 root root 22K Dec 7 23:58 redis-check-aof --redis AOF文件恢复工具
-rwxr-xr-x. 1 root root 7.5M Dec 7 23:58 redis-check-rdb --redis RDB文件检查工具
通常我们使用redis-server 和redis-cli 服务
3.1 直接启动:
redis 默认端口6379,直接执行命令 redis-server
也可以指定端口,-port 6370 ,执行命令: redis-server --port 6370
考虑到redis有可能正在从内存数据同步到磁盘,所以直接kill进程可能导致数据丢失,所以建议按正常的方式停止:
redis-cli SHUTDOWN
3.2 使用配置文件启动,这里暂不说明,大家可以查看相关资料
tcp-backlog 511 --
port 6379 --数据库端口配置,默认6379
protected-mode yes
bind 127.0.0.1 --绑定IP
timeout 30000 --如果一个连接在timeout设置的时间内是空闲的,这样就关闭该连接
tcp-keepalive 300
daemonize no --后台运行标志,yes代表后台运行
supervised no
pidfile /var/run/redis_6379.pid --如果daemonize设置为yes,就会产生该文件,这个是pid定义,一般对于端口号
#日志级别,默认是verbose(详细),各种日志级别:
#debug:很详细的信息,适合开发和测试
#verbose:包含许多不太有用的信息,但比debug要清爽一些(many rarely useful info, but not a mess like #the debug level)
#notice:比较适合生产环境
#warning:警告信息
loglevel notice#指定log文件的名字,默认是stdout。stdout会让redis把日志输出到标准输出。但是如果使用stdout而又以后台进#程的方式运行redis,则日志会输出到/dev/null
logfile stdout
logfile ""#设置数据库数目。默认的数据库是DB 0。可以通过SELECT <dbid>来选择一个数据库,dbid是[0,'databases'-1]的数字
databases 16
################## 快照#################################
#
# 硬盘上保存数据:
#
# save <seconds> <changes>
#
# <seconds>和<changes>都满足时就会触发数据保存动作。
#
#
# 以下面的例子来说明:
# 过了900秒并且有1个key发生了改变 就会触发save动作
# 过了300秒并且有10个key发生了改变 就会触发save动作
# 过了60秒并且至少有10000个key发生了改变 也会触发save动作
#
# 注意:如果你不想让redis自动保存数据,那就把下面的配置注释掉!
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
#存储数据时是否压缩数据。默认是yes。
rdbcompression yes
rdbchecksum yes
# 保存dump数据的文件名
dbfilename dump.rdb
# 工作目录.
#
# 数据会被持久化到这个目录下的‘dbfilename’指定的文件中。
#
#
# 注意,这里指定的必须是目录而不能是文件dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
aof-rewrite-incremental-fsync yes
hz 10
# 设置最大连接数. 默认没有限制, '0' 意味着不限制.
#
# maxclients 128
后面更多的参数就不在具体描述了,大家查资料参考下,下面我们设置使用配置文件启动数据库#!/bin/sh
#execute dir
echo "==========================="
echo "redis is begin to startting"
redis_path=/redis/redis-stable/src/
redis_conf=/redis/redis-stable/
# run server
$redis_path/redis-server $redis_conf/redis.conf
echo "redis is running............"
#run client
echo "redis client is begin to started"
$redis_path/redis-cli
简单的启动脚本,要写的更好一些可以好好改进一下。
3.3 配置
redis字典结构的存储服务器,类似关系数据库,一个实例可以创建多个数据库,redis也有多个数据库序号,默认情况下应该是16个,可以通过databases参数设置
序号从0开始,默认登录的话使用
的是0数据库节点,可以通过select命令,切换到不同的数据库序号。同时redis数据库不可以修改这些数字序号的数据库名称,也不支持给每个序号设置不同的用户密码
这样就是一个客户端要么都可以访问所有序号数据库,要么都不可以访问,多个数据库节点之间也不是完全隔离的。
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 2
OK
127.0.0.1:6379[2]> select 16 --如果选择数据库序号失败的话,返回下面
(error) ERR invalid DB index
127.0.0.1:6379[2]> select 15 --如果连接正确的话,就会返回OK,
OK