Redis的五种数据类型、基础命令及多实例配置启动
五种数据结构
redis
String
: 字符串
Hash
: 面向对象的结构面向数据结构,面向对象的处理数据的结构方式
List
: 双向链表双向链表,特点,头尾操作速度快,中间的操作速度慢,有排序,分为上 (左)/下(右)
Set
: 集合没有排序,不允许元素重复,一个集合的数据结构
ZSet
: 有序集合在集合的基础上绑定一个score作为排序的依据 比较典型的使用场景是排行榜系统。例如视频网站需要对用户上 传的视频做排行榜榜
操作命令
基础命令
keys
查看
key
值
keys *
: 查看当前节点所有的key值
set key value [NX/XX]
存储一个
key-value
结构的数据
set age 22 XX
如果key值相同则会覆盖原有值
NX
只有当前key值不存在的时候才能成功
XX
只有当前key存在于redis时才能成功
get key
获取当前key对用的value值
get age
获取age对应的value值
del key
根据key删除任意类型的value数据
del name
select 整数
redis默认存在16个分区(0--—15)
默认登陆的是0号分库
exists key [key] [key])
判断当前节点是否包含key数据
查询单个时
get
也可以完成
get
比较浪费资源
exists haha kaka age
查询是否存在haha kaka age 的 key
save
将当前的内存数据保存到磁盘文件
默认保存在 dump.rbd中
flushall
将当前redis的所有数据清洗-–--—》 持久化文件,内存文件
flushall
flushdb
清空一个分库(0-15)的文件-–--—》 不删除持久化文件内容
flushdb
expire key seconds
设置缓存数据存储的时间,单位(/秒)
expire name 50
pexpire key milliseconds
设置缓存数据存储的时间,单位(/毫秒)
pexpire name 50
ttl key
查看一个key的超时时间剩余时间,单位(/秒)
ttl name
pttl key
查看一个key的超时时间剩余时间,单位(/毫秒)
pttl name
type key
查看key对应value的类型
type name
help 命令
查看命令使用详情
建议去redis官网查看
String命令
略
List命令
略
set命令
略
zset命令
略
redis的多实例配置启动
配置文件redis.conf
redis根目录 /home/software/redis-3.2.11/redis.conf
redis配置数据大小的单位
第11行
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
绑定可以访问redis服务的ip地址
第61行
一般使用127.0.0.1,外网ip,默认只能在本地登陆
#bind 127.0.0.1
保护模式的使用
第80行
默认开启,除了本都客户端外的任何客户端无法使用
protected-mode no
手动关闭
开启服务的端口
第84行
默认端口是6379
port 6379
后台守护进程是否开启
第128行
一旦开启,那么启动进程不会占用控制台,会将日志输出到一个指定的日志文件中
daemonize yes
手动开启
日志输出地址
第163行
将日志输出到指定文件中
logfile "6379.log"
将日志文件打印到6379.log
文件中
指定持久化的策略
第202行
900秒内,数据至少写入一次 调用
save
300秒内,数据至少写入10次 调用
save
60秒内,数据写入1000次 调用
save
save 900 1
save 300 10
save 60 10000
变化频率越高,存储频率就越高
数据淘汰策略
第542行
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key according to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations
volatile
:与设置的超时数据有关
allkeys
:所有数据
volatile-lru
: 当内存数据达到上限,对已经设置超时的数据,使用LRU(最近最久未置用算法),淘汰数据
volatile-random
当内存数据达到上限,对已经设置超时的数据,随机删除
容量上限
537行
#maxmemory <bytes>
准备三个实例的配置文件
[root@10-9-39-13 redis-3.2.11]# cp redis.conf 6379redis.conf
[root@10-9-39-13 redis-3.2.11]# cp redis.conf 6380redis.conf
[root@10-9-39-13 redis-3.2.11]# cp redis.conf 6381redis.conf
修改端口
:%s/6379/6380/g
保存退出
[root@10-9-39-13 redis-3.2.11]# redis-server 6379redis.conf
[root@10-9-39-13 redis-3.2.11]# redis-server 6380redis.conf
[root@10-9-39-13 redis-3.2.11]# redis-server 6381redis.conf
查看启动状态
#ps -ef|grep redis