21.13/21.14/21.15 redis常用操作
Redis常用操作 (string, list)
-
set key1 aminglinux
-
get key1
-
set key1 aming//第二次赋值会覆盖
-
setnx key2 aaa //返回1 如果key2不存在直接创建key
-
setnx key2 bbb //返回0,如果key2存在,返回0
-
setex key3 10 1 //给key3设置过期时间为10s,值为1,若key已经存在,会覆盖新的值
-
mset k1 1 k2 a k3 c
-
mget k1 k3 k2
-
lpush lista a //从左侧加入一个元素
-
lpush lista b
-
lrange lista 0 -1
-
lpop lista //从左侧取出第一个元素
-
rpush lista 1 //从右侧加入一个元素
-
rpop lista //从右侧取出第一个元素
string
#set,get用法
set
key1 aminglinux
get key1
#set第二次被覆盖
set
key1 aming//第二次赋值会覆盖
#setnx 检查key值是否存在,key存在,则不被覆盖,key不存在,直接创建key
127.0.0.1:6379
>
get key1
"10"
127.0.0.1:6379
>
get key10
(
nil
)
127.0.0.1:6379
>
SETNX key1 100
(
integer
)
0
127.0.0.1:6379
>
SETNX key10 100
(
integer
)
1
#设置过期时间,
格式:set
`
key
`
`
value
`
ex
`
time
`
127.0.0.1:6379
>
set
key11 111 ex 10
OK
#setex用法,给key11设置过期时间为10s,值为1,若key已经存在,会覆盖新的值
格式: SETEX
`
key
`
`
seconds
`
`
value
`
127.0.0.1:6379
>
SETEX key11 1000 11
OK
127.0.0.1:6379
>
get key11
"11"
list
127.0.0.1:6379
>
LPUSH list11 aaa
(
integer
)
1
127.0.0.1:6379
>
LPUSH list11 bbb
(
integer
)
2
127.0.0.1:6379
>
LPUSH list11 ccc
(
integer
)
3
127.0.0.1:6379
>
LRANGE list11 0 -1
1
)
"ccc"
2
)
"bbb"
3
)
"aaa"
#从左侧取出第一个元素 ,最上的一个元素
127.0.0.1:6379
>
LPOP list11
"ccc"
#从右侧取出第一个元素,最下的一个元素
127.0.0.1:6379
>
RPOP list11
"aaa"
#取出的value,不会再存在list里面
127.0.0.1:6379
>
LRANGE list11 0 -1
1
)
"bbb"
Redis常用操作(list, set)
-
linsert lista before 2 3 //在2的前面插入一个元素为3
-
lset lista 4 bbb //把第5个元素修改为bbb
-
lindex lista 0 //查看第1个元素
-
lindex lista 3 //查看第4个元素
-
llen lista //查看链表中有几个元素
-
sadd seta aaa //向集合seta中放入元素
-
smembers seta //查看集合中的所有元素
-
srem seta aaa //删除元素
-
spop seta //随机取出一个元素,删除
-
sdiff seta setb //求差集,以seta为标准
-
sdiffstore setc seta setb //求差集并且存储,存储到了setc里
-
sinter seta setb //求交集
-
sinterstore setd seta setb //将交集存储setd
-
sunion seta setb //求并集
-
sunionstore sete seta setb //求并集并存储到sete
#在xxx的前面插入一个元素为xxx
127.0.0.1:6379
>LRANGE list11 0 -1
1
)
"bbb"
127.0.0.1:6379
>LINSERT list11 before bbb aaa
(
integer
)
2
127.0.0.1:6379
>LRANGE list11 0 -1
1
)
"aaa"
2
)
"bbb"
#在xxx的后面插入一个元素为xxx
127.0.0.1:6379
>LINSERT list11 after bbb ccc
(
integer
)
3
127.0.0.1:6379
>LRANGE list11 0 -1
1
)
"aaa"
2
)
"bbb"
3
)
"ccc"
#把第1个元素修改为123 ,用下标表示,0=no.1,1=no.2,以此类推
格式 LET
`
key
`
`
位置
`
`
value
`
127.0.0.1:6379
>LSET list11 0 123
OK
127.0.0.1:6379
>LRANGE list11 0 -1
1
)
"123"
2
)
"bbb"
3
)
"ccc"
#查看第一个元素
127.0.0.1:6379
>LRANGE list11 0 -1
1
)
"123"
2
)
"bbb"
3
)
"ccc"
127.0.0.1:6379
>LINDEX list11 0
"123"
#查看链表中有几个元素
LLEN list11
#随机取出一个元素,删除
127.0.0.1:6379
>sadd seta aaa
(
integer
)
1
127.0.0.1:6379
>sadd seta bbb
(
integer
)
1
127.0.0.1:6379
>SPOP seta
"aaa"
127.0.0.1:6379
>SMEMBERS seta
1
)
"bbb"
Redis常用操作(set, zset)
-
sismember seta aaa //判断一个元素是否属于一个集合
-
srandmember seta //随机取出一个元素,但不删除
-
zadd zseta 11 123 //创建有序集合
-
zrange zseta 0 -1 //显示所有元素,按顺序显示
-
zrange zseta 0 -1 withscores //可以带上分值
-
zrem zseta 222 //删除指定元素
-
zrank zseta 222 //返回元素的索引值,索引值从0开始,按score正向排序
-
zrevrank zseta 222 //同上,不同的是,按score反序排序
-
zrevrange zseta 0 -1 反序显示所有元素,并带分值
-
zcard zseta //返回集合中所有元素的个数
-
zcount zseta 1 10 // 返回分值范围1-10的元素个数
-
zrangebyscore zseta 1 10 // 返回分值范围1-10的元素
-
zremrangebyrank zseta 0 2 //删除索引范围0-2的元素,按score正向排序
-
zremrangebyscore zseta 1 10 //删除分值范围1-10的元素
#创建有序集合
127.0.0.1:6379> ZADD zseta 11 123
(integer) 1
127.0.0.1:6379> ZADD zseta 22 223
(integer) 1
127.0.0.1:6379> ZRANGE zseta 0 -1
1) "123"
2) "223"
127.0.0.1:6379>
#删除指定元素
127.0.0.1:6379> ZREM zseta 123
(integer) 1
127.0.0.1:6379> ZREM zseta 223
(integer) 1
127.0.0.1:6379>
#返回元素的索引值,索引值(integer后面的值)从0开始,按score正向排序,
127.0.0.1:6379> ZADD zseta 10 aaa
(integer) 1
127.0.0.1:6379> ZADD zseta 30 cccc
(integer) 1
127.0.0.1:6379> ZADD zseta 20 bbb
(integer) 1
127.0.0.1:6379> ZRANGE zseta 0 -1
1) "aaa"
2) "bbb"
3) "cccc"
127.0.0.1:6379> ZRANk zseta aaa
#反序排序
127.0.0.1:6379> ZREVRANGE zseta 0 -1
1) "cccc"
2) "bbb"
3) "aaa"
(integer) 0
127.0.0.1:6379> ZRANk zseta ccc
(nil)
127.0.0.1:6379> ZRANk zseta cccc
(integer) 2
Redis常用操作(hash)
-
hset user1 name aming //建立hash
-
hset user1 age 30
-
hset user1 job it
-
hgetall user1
-
hmset user2 name aming age 30 job it //批量建立键值对
-
hmget user2
-
hmget user2 name age job
-
hdel user2 job //删除指定filed
-
hkeys user2 //打印所有的key
-
hvals user2 //打印所有的values
-
hlen user2 //查看hash有几个filed
21.16 redis操作键值
key * //取出所有key
key my* //模糊匹配
exits name//有name键返回1,否则返回0;
del key1//删除一个key //成功返回1,否则返回0;
EXPIRE key1 100 //设置key1 100s后过期
ttl key//查看键还有多长时间过期,单位是s,当key不存在时,返回-2.
当key存在但没有设置剩余生存时间时,返回-1.否则,返回key的剩余生存时间。
select 0//代表选择当前数据库,默认进入0的数据库
move age 1//把age移动到1 的数据库
persitt key1//取消key1的过期时间
randomkey//随机返回一个key
rename oldname newname//重命名key
typekey1//返回键的类型
dbsize//返回当前数据库中key的数目
info//返回redis数据库状态信息
flushdb//清空当前数据库中所有的键
flushshall //清空所有数据库中的所有的key
bgsave//保存数据到rdb文件中,在后台运行
save//作用同上,但是在前台运行
config get *//获取所有配置参数
config get dir//更改配置参数
数据恢复:首先定义或者确定dir目录和dbfilename,然后把备份的rdb文件放到dir目录下面,重启redis服务即可恢复数据
21.17 redis安全设置
设置监听ip
bind 127.0.0.1 2.2.2.2//可以是多个ip,用空格分隔
设置监听端口
port 16000
设置密码
requirepass aming>com
# The filename where to dump the DB
dbfilename dump.rdb
# The working directory.
requirepass aming>com
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /data/redis
redis-cli -a 'aming>com'
killall redis-server 关闭redis
redis-server /etc/redis.conf 开启redis
将config命令改名
rename-command CONFIG aming
[root@web-01 ~]# redis-cli -a 'aming>com'
127.0.0.1:6379> config
(error) ERR unknown command 'config'
127.0.0.1:6379> aming
(error) ERR wrong number of arguments for 'config' command
127.0.0.1:6379> config get dir
(error) ERR unknown command 'config'
127.0.0.1:6379> aming get dir
1) "dir"
2) "/data/redis"
禁掉config命令
rename-command CONFIG""