redis 基础操作

使用yum安装:
yum -y install epel-release
yum -y install redis
安装完成后,redis配置文件的路径为:/etc/redis.conf.
mkdir /var/run/redis
chown redis:redis /var/run/redis
启动redis:
service redis start
chkconfig redis on
可能遇到的问题:
1、提示redis.log无权限,解决方法:
chmod -R 777 /var/log/redis/
2、在redis.log中会有警告,需要编辑sysctl.conf并添加如下内容,
vm.overcommit_memory = 1
net.core.somaxconn = 8192
修改并保存。
在root权限下执行命令,并放到/etc/rc.local文件中。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
这里要重启服务器!!
初始化配置master:
1、修改redis.conf中的bind为当前IP地址,比如:
bind 192.168.64.39
2、设置登录密码
修改配置文件,添加如下内容,启用密码。
requirepass 123.abc
重启服务生效,service redis restart
在不重启redis服务的情况下设置密码。方法是:
登录redis:redis-cli -h 192.168.64.39 -p 6379
执行命令设置密码:config set requirepass 123.abc
查询当前密码:config get requirepass
清空密码或禁用密码:config set requirepass “”
重点注意:
如果使用config命令设置密码后,redis.conf文件中的设置无效。
如果要让redis.conf文件中的密码生效,必须在redis中,先把密码清空
config set requirepass “”
然后重启redis服务。如果在重启过程中,如果出现如下提示:
[root@THY_On_Redis_01 ~]# service redis restart
Stopping redis-server: (error) NOAUTH Authentication required.
[ OK ]
Starting redis-server: [ OK ]
则表示密码已经被config set requirepass修改。重启不会使用redis.conf文件中的密码。
下面是回复过程:
[root@THY_On_Redis_01 ~]# redis-cli -h 192.168.64.39 -p 6379
192.168.64.39:6379> auth Redis&&.!tro
(error) ERR invalid password
192.168.64.39:6379> auth test
OK
192.168.64.39:6379> config set requirepass “”
OK
192.168.64.39:6379> exit
[root@THY_On_Redis_01 ~]# service redis restart
Stopping redis-server: [ OK ]
Starting redis-server: [ OK ]
[root@THY_On_Redis_01 ~]# redis-cli -h 192.168.64.39 -p 6379
192.168.64.39:6379> auth Redis&&.!tro
OK
3、登录redis
# redis-cli -h 192.168.64.39 -p 6379 -a 123.abc
4、创建key,删除key和查看所有key
>set testkey 123.abc
>keys *
>del testkey
5、查看指定key,比如testkey
>get testkey
6、查看帮助
> help
redis-cli 3.2.11
To get help about Redis commands type:
“help @” to get a list of commands in
“help ” for help on
“help ” to get a list of possible help topics
“quit” to exit
To set redis-cli perferences:
“:set hints” enable online hints
“:set nohints” disable online hints
Set your preferences in ~/.redisclirc
> help get
GET key
summary: Get the value of a key
since: 1.0.0
group: string
Q:redis-cli命令行有哪些命令呢?
“help ” to get a list of possible help topics //在help后面按tab键会依次显示可用命令集合和具体命令。第一个命令集合是:@generic
127.0.0.1:6379> help @generic
依次是@generic @string @list等等。其中运维用的是@server,其中包含info命令。
7、配置主从
默认情况下,redis服务器就是master,不用特殊设置。
slave服务器,需要在redis.conf配置文件中,添加如下语句:
slaveof 192.168.64.39 6379
masterauth 123.abc (master redis登录密码)
8、查看redis服务器的复制状态,执行命令info
192.168.64.39:6379> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
9、安装redis 需要注意的几个参数
系统参数
vm.overcommit_memory = 1
net.core.somaxconn = 8192 同配置的backlog
echo never > /sys/kernel/mm/transparent_hugepage/enabled
配置参数
Maxmemory 102400mb/10gb
timeout 180
tcp-keepalive 300
repl-backlog-size 32M #psync初始大小
client-output-buffer-limit normal 512mb 256mb 60
client-output-buffer-limit slave 1024mb 256mb 120
10、设置最大可用内存
maxmemory 12gb
maxmemory-policy volatile-lru
查看当前内存使用情况(info):
# Memory
used_memory:1883024
used_memory_human:1.80M
used_memory_rss:2256896
used_memory_rss_human:2.15M
used_memory_peak:1883024
used_memory_peak_human:1.80M
total_system_memory:67556261888
total_system_memory_human:62.92G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:53687091200
maxmemory_human:50.00G
maxmemory_policy:volatile-lru
mem_fragmentation_ratio:1.20
mem_allocator:jemalloc-3.6.0
11、设置最大连接客户端
maxclients 10000
在info中可以查看当前连接客户端数量。
12、redis默认db路径
在配置文件/etc/redis.conf有配置,可以调整位置。
/var/lib/redis/dump.rdb
13、关于数据库操作:
查看哪些db中包含key。
>info keyspace
info keyspace
# Keyspace
db0:keys=41,expires=3,avg_ttl=635127782
db1:keys=33,expires=0,avg_ttl=0
db2:keys=59,expires=0,avg_ttl=0
db8:keys=2,expires=0,avg_ttl=0
key * 和dbsize都查看的某个db中的key的数量。
14、关于redis的select命令用法:
SELECT index
切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
默认使用 0 号数据库。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值: OK
redis> SET db_number 0 # 默认使用 0 号数据库 OK redis> SELECT 1 # 使用 1 号数据库 OK redis[1]> GET db_number # 已经切换到 1 号数据库,注意 Redis 现在的命令提示符多了个 [1] (nil) redis[1]> SET db_number 1 OK redis[1]> GET db_number “1” redis[1]> SELECT 3 # 再切换到 3 号数据库 OK redis[3]> # 提示符从 [1] 改变成了 [3]
15、redis配置文件中下面的参数来控制数据库总数:
database 16 #默认为16个数据库,可以自己更改
17、每个数据库都有属于自己的空间,不必担心之间的key冲突。
18、flushdb命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。
19、可以实时查看当前处理的cmd命令:
root@pe-redis01 11:09:41 ~$ redis-cli -a 123456
127.0.0.1:6379> monitor
OK
1584932987.613159 [0 127.0.0.1:31057] “AUTH” “123456”
1584932987.613227 [0 127.0.0.1:31057] “info”
1584932987.793371 [2 10.10.0.38:59478] “SELECT” “0”
1584932987.793732 [0 10.10.0.38:59478] “SELECT” “2”
1584932987.793919 [2 10.10.0.38:59478] “GET” “AB35259BE1DDFD9DC3285BFB46758875”
1584932987.797989 [2 10.10.0.38:59478] “SELECT” “0”
1584932987.798203 [0 10.10.0.38:59478] “SELECT” “2”
1584932987.798775 [2 10.10.0.38:59478] “EXPIRE” “AB35259BE1DDFD9DC3285BFB46758875” “1800”
重定向monitor到文件中:
redis-cli -a 123456 -c monitor >redis-monitor.log &
20、redis命令手册: