Redis——Redis通用指令和服务器配置

Redis通用指令和服务器配置

  • Redis通用指令
    • key通用操作
      • key 扩展操作(时效性控制)
      • key 扩展操作(查询模式)
    • 数据库通用指令
      • db 基本操作
      • db 相关操作
  • Redis服务器配置
    • 服务器端设定
      • 日志配置
      • 客户端配置
      • 多服务器快捷配置

Redis通用指令

key通用操作

  • key是一个字符串,通过key获取redis中保存的数据

key应该设计哪些操作

  • 对于key自身状态的相关操作,例如:删除,判定存在,获取类型等

  • 对于key有效性控制相关操作,例如:有效期设定,判定是否有效,有效状态的切换等

  • 对于key快速查询操作,例如:按指定策略查询key

  • 删除指定key

    del key

  • 获取key是否存在

    exists key

  • 获取key的类型

    type key

127.0.0.1:6379> set str str
OK
127.0.0.1:6379> hset hash1 hash1 hash1
(integer) 1
127.0.0.1:6379> lpush list1 list1
(integer) 1
127.0.0.1:6379> sadd set1 set1
(integer) 1
127.0.0.1:6379> zadd zset1 1 zset1
(integer) 1
127.0.0.1:6379> type zset1
zset
127.0.0.1:6379> type str
string
127.0.0.1:6379> type hash1
hash
127.0.0.1:6379> exists str
(integer) 1
127.0.0.1:6379> exists strqwfqw
(integer) 0
127.0.0.1:6379> del zset1
(integer) 1
127.0.0.1:6379> del zset1
(integer) 0
127.0.0.1:6379> exists zset1
(integer) 0

key 扩展操作(时效性控制)

  • 为指定key设置有效期

    expire key seconds
    pexpire key milliseconds
    expireat key timestamp # 使用时间戳
    pexpireat key milliseconds-timestamp

  • 获取key的有效时间

    ttl key
    pttl key

  • 切换key从时效性转换为永久性

    persist key

127.0.0.1:6379> expire list1 30
(integer) 1
127.0.0.1:6379> ttl list1
(integer) 25
127.0.0.1:6379> ttl list1
(integer) 12
127.0.0.1:6379> ttl list1	# 失效的key返回-2
(integer) -2
127.0.0.1:6379> ttl list2	# 没有时效的key返回-1
(integer) -1

127.0.0.1:6379> persist list2	# 对没有设置时效性的key转换成永久性 返回0
(integer) 0
127.0.0.1:6379> expire list2 60
(integer) 1
127.0.0.1:6379> ttl list2
(integer) 57
127.0.0.1:6379> persist list2	# 设置时效性的key 返回1 成功
(integer) 1
127.0.0.1:6379> ttl list2
(integer) -1

key 扩展操作(查询模式)

  • 查询key

    keys pattern

查询模式规则

* 匹配任意数量的任意符号
? 配合一个任意符号
[] 匹配一个指定符号

keys * 查询所有
keys it* 查询所有以it开头
keys *heima 查询所有以heima结尾
keys ??heima 查询所有前面两个字符任意,后面以heima结尾
keys user:? 查询所有以user:开头,最后一个字符任意
keys u[st]er:1 查询所有以u开头,以er:1结尾,中间包含一个字母,s或t
127.0.0.1:6379> keys us*
 1) "user:id:110:fans"
 2) "user:id:120"
 3) "user1"
 4) "user2"
 5) "user5"
 6) "user:1:age"
 7) "user"
 8) "user:1:name"
 9) "user3"
10) "user:1:gender"
11) "user4"
12) "user:id:110:views"
13) "user:id:110:likes"
127.0.0.1:6379> keys s*
1) "shop:001"
2) "s1"
3) "set1"
4) "s2"
5) "scores"
6) "sss"
7) "socres"
8) "ss"
9) "s3"

127.0.0.1:6379> keys use?
1) "user"
127.0.0.1:6379> keys s?r
1) "str"
127.0.0.1:6379> keys ????
1) "list"
2) "set1"
3) "user"
4) "logs"
5) "news"

127.0.0.1:6379> set name niu
OK
127.0.0.1:6379> set nbme zhu
OK
127.0.0.1:6379> keys n[]me
(empty array)
127.0.0.1:6379> keys n[abc]me
1) "nbme"
2) "name"

key 其他操作

  • 为key改名

    rename key newkey
    renamenx key newkey

  • 对所有key排序

    sort

  • 其他key通用操作

    help @generic

127.0.0.1:6379> rename user user100
OK
127.0.0.1:6379> get user100
"zhu"
127.0.0.1:6379> keys user*
 1) "user:id:110:fans"
 2) "user:id:120"
 3) "user1"
 4) "user2"
 5) "user5"
127.0.0.1:6379> renamenx user1 user2	# 如果改的名字存在 则修改失败
(integer) 0
127.0.0.1:6379> lpush aa 123
(integer) 1
127.0.0.1:6379> lpush aa 321
(integer) 2
127.0.0.1:6379> lpush aa 222
(integer) 3
127.0.0.1:6379> lrange aa 0 -1
1) "222"
2) "321"
3) "123"
127.0.0.1:6379> sort aa		# 只排序 不动原列表
1) "123"	
2) "222"
3) "321"
127.0.0.1:6379> lrange aa 0 -1
1) "222"
2) "321"
3) "123"

数据库通用指令

key 的重复问题

  • key是由程序员定义的
  • redis在使用过程中,伴随着操作数据量的增加,会出现大量的数据以及对应的key
  • 数据不区分种类、类别混杂在一起,极易出现重复或冲突

解决方案

  • redis为每个服务提供有16个数据库,编号从0到15
  • 每个数据库之间的数据相互独立

db 基本操作

  • 切换数据库

    select index

  • 其他操作

    quit
    ping
    echo message

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 15
OK
127.0.0.1:6379[15]> echo abcd
"abcd"
127.0.0.1:6379[15]> ping pong		# 测试是否连接成功
"pong"
127.0.0.1:6379[15]> quit

db 相关操作

  • 数据移动

    move key db

  • 数据清除

    dbsize
    flushdb
    flushall

127.0.0.1:6379[1]> get name
(nil)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> move name 1
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"niu"

如果另一个库有相同的key 移动的话会失败

127.0.0.1:6379[2]> set name zhu
OK
127.0.0.1:6379[2]> get name
"zhu"
127.0.0.1:6379[2]> flushdb 
OK
127.0.0.1:6379[2]> get name
(nil)
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> get name
"niu"

Redis服务器配置

服务器端设定

  • 设置服务器以守护进程的方式运行

    daemonize yes|no

  • 绑定主机地址

    bind 127.0.0.1

  • 设置服务器端口号

    port 6379

  • 设置数据库数量

    databases 16

开启两个redis服务
[root@maomao redis_config]# mv redis.conf redis-6379.conf 
[root@maomao redis_config]# ls
redis-6379.conf
[root@maomao redis_config]# cp redis-6379.conf redis-6380.conf 
[root@maomao redis_config]# vim redis-6380.conf 
修改端口号和日志名称还有dir位置
port 6380
logfile "6380.log"
dir /usr/local/redis/data


[root@maomao bin]# redis-server redis_config/redis-6379.conf 
[root@maomao bin]# redis-server redis_config/redis-6380.conf 
[root@maomao bin]# ps -aux |grep redis
root       1814  0.1  0.4 162456 10060 ?        Ssl  09:38   0:00 redis-server 127.0.0.1:6379
root       1820  0.6  0.4 162456 10060 ?        Ssl  09:38   0:00 redis-server 127.0.0.1:6380


[root@maomao bin]# redis-cli -p 6379
127.0.0.1:6379>
[root@maomao bin]# redis-cli -p 6380
127.0.0.1:6380> 

查看日志
[root@maomao data]# pwd
/usr/local/redis/data
[root@maomao data]# ls
6379.log  6380.log

日志配置

  • 设置服务器以指定日志记录级别

    loglevel debug|verbose|notice|warning

  • 日志记录文件名

    logfile 端口号.log

  • 设定当前服务文件保存位置,包含日志文件,持久化文件等

    dir “/自定义路径/redis/data”

注意:日志级别开发期设置为verbose即可,生产环境中配置为notice,简化日志输出量,降低写日志IO的频度

客户端配置

  • 设置同一时间最大客户端连接数,默认无限制。当客户端连接到达上限,Redis会关闭新的连接

    maxclients 0

  • 客户端闲置等待最大时长,达到最大值后关闭连接。如需关闭该功能,设置为 0

    timeout 300

多服务器快捷配置

  • 导入并加载指定配置文件信息,用于快速创建redis公共配置较多的redis实例配置文件,便于维护

    include /path/server-端口号.conf

你可能感兴趣的:(Redis,数据库,redis,linux)