redis的基本用法

特征及优点

  • 高可用
  • 访问量大
  • 海量数据

要想使用需在Github.com/MSOpenTech/redis/releases中下载Redis

inux中基本命令

常用命令
  • Ping:确定Redis是否正常工作(pong为正常)
  • Dbsize:查看当前端口的库有多少条数据
  • Databases xx:设置数据库库数,找到Redis安装目录中Redis.conf,修改该属性值
  • Flusedb:删除当前库
  • Exit,quit,退出当前库
进入数据库后操作key的命令
  • Keys pattern:查找所有符合模式pattern的key
  • Exists key[key...]:判断key是否存在
  • Expire key seconds:设置key的存活时间,超过时间自动删除key,单位秒
  • Ttl key:返回key的剩余生存时间
  • Type key:查看key所存储的数据类型
  • Del key[key...]:删除指定key
进入数据库后操作字符串类型的基本命令(String)
  • Set key value:将字符串value设置到key中
  • Get key:获取key的字符串value
  • Incr key:将key中存储的value数字值加1,如果key不存在,则key的值先被初始化为0在执行 incr加1操作(只能对数字类型的数据操作)并返回结果value 其是原子性,执行不会被影响
  • Decr key:与incr相反
  • Append key value:如果key存在。则将value追加到key原来旧值的末尾 如果key不存在,则将新建key并设置value 返回值是value长度
  • Strlen:返回key中value的 长度,没有就为0
  • Getrange key start end:获取key中指定区间的value值
  • Setrange key offset value:修改offset之后的值为value
  • Mset key value[key...]:一次创建多个key
  • Mget key value[key...]::一次性获取多个key
进入数据库后操作哈希类型(hash)命令
Hash是一个string类型的field和value的映射表,hash特别适合存储对象
  • Hset key field value:设置hash的值
  • Hmset key field value[field value..]:设置多个值
  • Hmget key field value[field value..]:获取多个值
  • Hgetall key:获取所有值
  • Hdel:删除
  • Hkeys key:获取field
  • Hexists key field:查看哈希表key中,给定field是否存在
进入数据库后操作列表list命令
顺序插入,在头部操作就为left,在尾部操作就为rigth
  • Lpush key value[value...],返回列表长度,注意是依次在最左端插入元素value
  • Rpush:和上面相反
  • Lrange key start stop:获取key中指定区间的元素
  • Lindex key index:取出指定下标的元素
  • Llem key:获取列表元素个数
  • Lrem key count value:根据参数count的值,移除列表中与value相等的元素。Count》0,从左向右删除,<0从右往左删除,=0移除表中所有与value相等的值 Count值表示删几个
  • Lset key index value:将列表key下标为index的元素的值设置为value
  • Linsert key before/alfter pivot value:在piviot值之前或之后插入value
进入数据库后操作无序set集合命令
  • Sadd key member [member]:添加一个或多个元素
  • Smembers key:获取集合key中的所有成员元素,不存在key视为空集合
  • Sismember key member:判断member元素是否是集合key的成员
  • Srem key member[member...]:删除元素
  • Srandmember key[count]:随机取出count个元素,默认为1。正负的正表示不取重复的数据,负则相反
  • Spop key[count]:随机删除元素
进入数据库后操作有序集合类型zset命令
有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。不同的是zset的每个元素都会关联一个分数(可重复),Redis通过分数来为集合中的成员进行从小到大的排序。
  • Zadd key score member[score member]:添加成员,按score大小排序,score相同,按成员首字母顺序排
  • Zrange key start stop[withscore]:取出指定下标区间的元素,withscore写上说明把score也取出来
  • Zrevrange:和zrange相反,取出来的成员从大到小排
  • zrem key member[member...]:删除元素
  • zcard key:获取集合的元素个数
  • Zrangebyscore key min max[withscore][limit offset count]:获取>=min,<=max的元素。加上(min,表示不包含,+inf最大的值,-INF最小 Limit为分页功能,offset表示第几个开始,count表示取出的个数
  • Zrevrangebyscore:从大到小排序
  • Zcount key min max:在区间范围内的元素个数
Redis事务
指一系列操作步骤要么完全地执行,要么完全不执行 事务是一组命令集合,至少是两个或两个以上的命令。Redis事务保证这些命令执行不被其他操作打断
  • Muit:开启事务
  • 事务内的一系列操作命令
  • Exec:执行事务操作
  • Disco...:放弃事务
  • Watch key[key...]在开启监控key期间观察key的值是否被改变,提交事务后如改了,则不继续改值。达到一次watch时只能修改一次key。(相当于mysql乐观锁的机制)
Redis持久化方法
Redis持久化: Redis会单独开个线程把数据存储在磁盘中
配置格式:
  • save< seconds>< changes>:例如Save 900 1 :900秒时间内有1个key改动则保存数据(可有多条策略)
  • Dbfilename:设置rdb文件名,默认名为dump.rdb
  • Dir:rdb文件存储目录,默认./当前路径
AOF方式
Redis每次接受一条改变数据的命令时,它将把该命令写到AOF中(只记录写不记读)。当Redis重启时通过AOF保存的所有命令进行恢复数据
需在Redis.Conf中配置
  • Appendonly:默认是no,改成yes开启aof持久化
  • Appendfilename:指定aof文件名,默认是appendonly.aof
  • Appendfsync:配置向aof文件写命令数据的策略

    No:不主动进行同步操作,而是完全交由操作系统来做(即每30秒一次写入磁盘一次)。比较快但不安全。万一还没到30秒就崩了,就写不进去了就丢失了。

    Always:每次执行写入都会进行同步(一边存内存,一边存磁盘)。慢但安全

    Everysec:每秒执行一次同步操作。比较平衡。介于速度和安全之间。为默认值


  • Auto-anf-rewrite-min-size:允许重写的最小aof文件大小,默认是64m。当aof文件大于64m时,开始整理aop文件,去掉无用的操作命令。缩小aof文件。
主从复制-读写分离(集群)
主进行修改操作 从进行读操作,读主服务器
举例实现步骤
  • Master的Redis端口为xxx
    Slaver的Redis端口分别为xxx,xxx
    把原来的Redis.conf配置文件分成三份
  • Master配置文件清空并加入以下内容
    Include /usr/local/redis-3.2.9/redis.conf(复制之前的配置)
    Daemonize yes
    Port 6380
    Pidfile /var/run/redis_6380.pid
    Logfile 6380.log
    Dbfilename dump6380.rdb
  • Slaver配置文件清空并加入以下内容
    Include /usr/local/redis-3.2.9/redis.conf(复制之前的配置)
    Daemonize yes(让Redis后台启动)
    Port 6382(当前Redis运行的端口号)
    Pidfile /var/run/redis_6382.pid(运行时会标识这个程序一个ID)
    Logfile 6382.log(日志文件)
    Dbfilename dump6380.rdb(rdb存储文件名)
    **Slaveof 127.0.0.1 6380(6380的slaveof)**
    (其余的slave都这样写)*

  • 这样master能读能写,slaveof只能读不能写
    容灾处理
    假如master挂了,就需要手动提升其中一个slaveof为master
    实现一(手动,但延迟高):
    在其中一台slave中写入
    Slaveof no one:将一台slaveof提升为master
    在其他slave中写入
    Slaveof 127.0.0.1.6381:将slaveof挂至新的master上
    

实现二(sentinel哨兵)
为另一个应用程序,只负责监控Redis服务器
三个任务:
监控
提醒
自动故障转移:即上面的手动处理变自动自动
(具体实现方法自行查找)
安全设置
可设置密码
绑定IP
修改默认端口号

最后
Jedis操作Redis
导入jedis的jar包,使用时创建jedis类
传入string host=服务器端口号
Int port=端口号。。。(这些自行百度,主要功能是 提供Java操作Redis)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Redis数据库是一个内存数据库,通过key-value键值对的方式进行数据存储。它的优点包括访问速度快、适用于缓存系统和存储大量活跃数据,可以提高网站的响应速度。\[1\]在Java中,有两个比较出名的连接Redis的驱动包,分别是Jedis和Redisson,我们可以使用Jedis来进行程序操作Redis。\[3\]以下是一些基本Redis操作方法: - 使用`new Jedis(host, port)`创建Jedis对象,其中host是Redis服务器地址,port是Redis服务端口。 - 使用`set(key, value)`方法设置字符串类型的数据。 - 使用`get(key)`方法获取字符串类型的数据。 - 使用`hset(key, field, value)`方法设置哈希类型的数据。 - 使用`hget(key, field)`方法获取哈希类型的数据。 - 使用`lpush(key, values)`方法设置列表类型的数据。 - 使用`lpop(key)`方法从列表左侧弹出元素。 - 使用`rpop(key)`方法从列表右侧弹出元素。 - 使用`del(key)`方法删除指定的key。\[3\] #### 引用[.reference_title] - *1* [redis基本操作](https://blog.csdn.net/m0_50782114/article/details/128119748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Redis基本使用!](https://blog.csdn.net/weixin_50769390/article/details/127134134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值