一、Redis的安装
1) 使用 tar –zxvf redis— 进行解压
2) 进入redis的解压目录,无需进行配置直接make进入编译阶段
3) 在安装的时候指定安装目录:make PREFIX=/usr/local/redis install
4) 将解压目录中的redis.conf配置文件复制到redis的安装目录中
5) 在redis文件中执行 . /bin/redis-server ./redis.conf //启动
注:在linux中执行可执行程序的时候要加 . /
6) 修改配置文件 daemonize yes // 后台启动
7) 重新启动(加入在bin目录下) . /redis-server ../redis.conf
8) 查看redis服务是否已经启动: netstat –tunpl | grep 6379
9) 客户端连接redis服务(bin目录下) . /redis-cli
10) 停止进程 pkill redis-server
二、数据类型和操作
1) string 字符串类型
set key value // 设置键值
get key // 获取键值
setnx key value // 判断键值是否存在,存在则不设置
setex key lifetime value // 设置具有生命周期的键值
mset key1 value1 key2 value2… // 设置多个键值
mget key1 key2 key3…. // 获取多个键值
incr key // 当执行某个键的时候将会自增1
incrby key val // 加法操作,给键加上val值
2)hashes 哈希类型
是一个string类型的field 和value的映射表,hash特别适合存储对象
hset key field value // 为key设置field和value
hget key field // 获取哈希名为key字段名称为field的值
hmset key field1 value1 field2 value2 …. // 一次设置多个值
hmget key field1 field2 …. // 一次获取多个字段的值
hlen key //获取哈希中字段的个数
hdel key field // 删除hash中的某个字段
hgetall key // 获取hash中所有的字段和值
3)lists 链表类型
主要功能是通过push,pop获取一个范围的所有值,操作中的key可以理解为链表的名字
redis的list类型其实就是一个子元素都是string类型的双向链表可以作为栈和队列
lpush 链表名 value // lpush 为栈 rpush 为队列 添加元素
rpop 链表名 value // 弹出元素左右均可
lrange 链表名 起始下标(0) 终止下标(-1) lrange list 0 0 // 查看指定范围内的元素
lrem 链表名 下标 元素 lrem list 0 xiaoxiao // 移除指定的元素
ltrim 链表名 起始下标 终止下标 // 保留指定范围下标内的值
lindex 链表名 下标 // 返回指定下标的元素
4)sets 集合类型
sets 是string类型的无需的集合,通过hash table来实现的,对集合我们得以取并集,交集、差集来实现对好友的推荐功能;redis 的集合具有唯一性和无需性
sadd 集合名称 value // 向一个集合内添加一个元素
smembers 集合名称 // 查看集合内元素
srem 集合名称 元素名 // 删除指定集合里面指定的元素
sdiff 集合名1 集合名2 // 返回集合1余集合2的差集
sinter集合名1集合名2 // 返回集合1和集合2的交集’
sunion 集合1 集合2 // 返回集合1和集合2的交集(去重)
scard 集合名 // 返回集合1中元素的个数
sismember 集合名1 元素名 // 判断某个元素是否存在于集合中
5)有序集合
6)其他命令
keys * // 查看所有redis中所有元素
exists key // 检测该键是否存在于数据库中
del key // 删除某个指定的键
exprie key // 对指定的键设置失效时间
ttl key // 查看该键的失效时间
type key // 查看该键的类型
select 0 // 选择0-15个数据库
dbsize // 返回当数据库中数据的个数
flushdb // 清除当前数据库的值
flushall // 清除所有数据库的值
三、redis 的安全性
1、设置密码
1)打开redis.conf文件,设置requirepass xxxx
2)重启redis服务: pkill redis-server
bin文件: ./redis-server ../redis.conf
2、登录
1)登录服务器的时候 ./bin/redis-cli -a 密码
2)登录以后通过 auth 密码 来完成
四、PHP对redis的连接
1、配置php.ini
1)获取动态库: php_igbinary.dll 和 php_redis.dll 放入ext目录中
2)修改php.ini添加动态库 extension = php_igbinary.dll(前)extension=php_redis.dll(后)
3)重启Apache
五、持久化机制
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步同硬盘中来保证持久化
快照机制
1)snapshotting:快照机制(默认)
将内存中的数据以自定义配置方式写入到二进制文件中,默认的文件名为.rdb
save 900 1 # 如果在900秒内有一个key被修改,将会执行快照机制
dbfilename dump.rdb 文件保存着快照的数据
2)为弥补自动执行快照的缺陷,手动方式为:
登录状态:bgsave (在重启之后将会看见)
未登录状态:./redis-cli bgsave
aof机制
由于快照的方式是一定的间隔做一次的,所以如果redis出现意外的情况下,就会丢失最后一次的数据,aof机制是通过write函数将每个执行的命令追加到函数中,当redis重启时会通过重新执行文件中保存的命名来在内存中重建整个数据库的内容
1)aof机制的配置: redis.conf 文件修改
appendonly yes // 开启aof持久化机制
appendfilename appendonly.aof // 保存命令的文件
appendfsync everysec // 每秒执行一次
2)重写命令
当我们在执行 incr number 的时候在短时间内执行的次数非常多,将会产生很多的无效字段来占用内存,故我们通过
登录状态:bgwriteaof 来进行重写
未登录的状态:./bin/redis-cli -a 密码 bgrewriteaof
当开启种机制的时候