redis数据库操作
redis是存储数据变化较快的并且不是总要的数据
安装:
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
13、设置密码
因为这是给局域网内的很多人使用,所以设置一个访问密码很有必要。
修改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