Redis数据库操作

redis是存储数据变化较快的并且不是总要的数据
1、安装:
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar -zxvf redis-5.0.0.tar.gz
yum install gcc
yum install gcc-c++
make && make install
cp src/redis-server /usr/bin/
cp src/redis-cli /usr/bin/

启动cd redis-5.0.0
redis-server redis.conf
配置文件参数:
daemonize yes

关闭
redis-cli shutdown

2、设置密码
因为这是给局域网内的很多人使用,所以设置一个访问密码很有必要。

通过指令设置密码:

config set requirepass 123

通过指令查看密码:

config get requirepass 

设置完成之后,登录密码:

auth 123


修改redis.conf文件配置 
使用命令 :/ requirepass 快速查找到 # requirepass foobared 然后去掉注释,这个foobared改为自己的密码。然后wq保存。

sudo service redis restart  这个时候尝试登录redis,发现可以登上,但是执行具体命令是提示操作不允许
1. redis-cli -h 127.0.0.1 -p 6379  
2. redis 127.0.0.1:6379>  
3. redis 127.0.0.1:6379> keys *  
4. (error) ERR operation not permitted  
尝试用密码登录并执行具体的命令看到可以成功执行
1. redis-cli -h 127.0.0.1 -p 6379 -a password
2. redis 127.0.0.1:6379> keys *
3. 1) "myset"  
4. 2) "mysortset"  
5. redis 127.0.0.1:6379> select 1  
6. OK 

bind 127.0.0.1 (192.168.126.8)#对外提供链接的地址
port 6379 #默认端口号
daemonize no #守护进程(如果是yes后台运行)
databases 16 #(redis数据库用0,1,2,3....代表)
save 900 1 #每900秒有1次增删改操作就同步到磁盘当中
dbfilename dump.rdb #rdb备份方式的文件名字(默认开启)
dir ./ #备份文件存放位置
appendonly no #aof备份是否开启(默认不开启)
appendfilename "appendonly.aof" #aof备份文件名称
appendfsync everysec #aof同步机制,每秒同步到磁盘当中

链接命令
redis-cli -h 127.0.0.1 -p 6379

切换用户
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]>
默认是0

字符串
添加:
127.0.0.1:6379[1]> set name zxw
OK
查看key
127.0.0.1:6379[1]> keys *
1) "name"
查看values
127.0.0.1:6379[1]> get name
"zxw"

设置过期时间
127.0.0.1:6379[1]> set name zxw ex 10
OK
127.0.0.1:6379[1]> get name
"zxw"


删除:
127.0.0.1:6379> del name
(integer) 1

 


列表

在列最上边添加元素:
添加到第一位
127.0.0.1:6379> lpush lan c++
(integer) 5
127.0.0.1:6379> lrange lan 0 -1
1) "c++"
2) "zxw"
3) "jave"
4) "python"
5) "zhao"
移除最上元素:
127.0.0.1:6379> lpop lan
"c++"


查看列表中的元素:
127.0.0.1:6379> lrange lan 0 -1 初始0 -1全局
1) "java"
2) "python"

 

在列表最下添加元素:

127.0.0.1:6379> rpush lan zxw
(integer) 4
127.0.0.1:6379> LRANGE lan 0 -1
1) "c++"
2) "java"
3) "python"
4) "zxw"

删除最底那个
127.0.0.1:6379> rpop lan
“zxw"

查看列表里几个元素
127.0.0.1:6379> llen lan
(integer) 4
127.0.0.1:6379> lrange lan 0 -1
1) "zxw"
2) "jave"
3) "python"
4) "zhao"


指定返回第几个元素:
127.0.0.1:6379> lindex lan 0
"zxw"
127.0.0.1:6379> lindex lan 1
"jave"
127.0.0.1:6379> lindex lan 0
"zxw"
127.0.0.1:6379> lindex lan 1
"jave"

删除指定的元素几次:
127.0.0.1:6379> lrange lan 0 -1
4) "zxw"
5) "zxw"
6) "jave"
7) "python"
8) "zhao"
127.0.0.1:6379> lrem lan 1 zxw
(integer) 3
127.0.0.1:6379> lrange lan 0 -1
2) "zxw"
3) "jave"
4) "python"
5) "zhao"


集合
添加元素去重:
127.0.0.1:6379> sadd lan jave python c++ zxw zxw
(integer) 4

查看元素:
127.0.0.1:6379> smembers lan
1) "jave"
2) "python"
3) "zxw"
4) "c++"

移除元素:

127.0.0.1:6379> srem lan jave
(integer) 1

查看集合中的元素个数:
127.0.0.1:6379> scard lan
(integer) 3
127.0.0.1:6379> SMEMBERS lan
1) "python"
2) "zxw"
3) "c++"


获取多个集合的交集:

127.0.0.1:6379> SMEMBERS lan
1) "python"
2) "c++"
3) "zxw"
127.0.0.1:6379> SMEMBERS lan2
1) "jave"
2) "python"
127.0.0.1:6379> SINTER lan lan2
1) "python"
获取多个集合的并集:
127.0.0.1:6379> SUNION lan lan2
1) "jave"
2) "python"
3) "zxw"
4) "c++"

获取多个集合的差集:以前为基准
127.0.0.1:6379> SDIFF lan lan2
1) "zxw"
2) "c++"

哈希

添加一个新值:
127.0.0.1:6379> hset zxw high 175
(integer) 1

获取哈希中的field对应的值:
127.0.0.1:6379> hget zxw high
"175"


删除:
127.0.0.1:6379> hdel zxw high
(integer) 1

获取某个哈希中所有的key:values

127.0.0.1:6379> hgetall zxw
1) "gender"
2) "nan"

获取某个哈希中所有的key

127.0.0.1:6379> HKEYS zxw
1) "gender"
2) "high"

获取某个哈希中所有的values:
127.0.0.1:6379> HVALS zxw
1) "nan"
2) "175"


判断哈希中是否存在某个field:

127.0.0.1:6379> HEXISTS zxw high
(integer) 1

获取哈希中总共的键值对:
127.0.0.1:6379> HLEN zxw
(integer) 2


事物操作:Redis事务可以一次执行多个命令,事务具有以下特征:
隔离操作:事务中的所有命令都会序列化、按顺序地执行,不会被其他命令打扰。
原子操作:事务中的命令要么全部被执行,要么全部都不执行。
开启一个事务:multi
提交事务:exec
回滚事务:discard

 

Redis数据库操作

上一篇:将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法


下一篇:MYSQL profiling分析语句