Redis学习笔记

1.Redis概述

redis是Nosql数据库,使用C语言进行编译,是一个闪存数据库存取速度极快,能够做到110000次/s的读取及81000次/s的写入;内部以键值对的形式进行存储,键是String类型,值的类型可以为字符串(String)、哈希(hash)、字符串列表(list)、字符串集合(set)、有序字符串集合(sorted set)等:

2.Redis开启及关闭(以下操作需要在redis安装目录下执行)

	cd /usr/local/redis  #进入Redis目录下

Redis目录

3 Redis简单使用

3.1 Redis命令行使用

3.1.1 使用方法一
            ./redis-server redis.conf  #启用redis数据库
            ./redis.cli  #进入命令行

            。。。执行数据库的一系列操作            

            ./exit  #退出命令行
            ps -ef | grep redis  #查看Redis所占用的端口
            kill -9 进程号  #杀死进程
            ./redis.cli  #提示连接失败说明关闭成功!

Redis简单使用流程(1)

3.1.2 使用方法二
			./redis-server redis.conf  #启用redis数据库
            ./redis.cli  #进入命令行

            。。。执行数据库的一系列操作            

            ./exit  #退出命令行
            ./redis.cli shutdown  #关闭进程
            ./redis.cli  #提示连接失败说明关闭成功!

Redis简单使用流程(2)

3.2 Java连接Redis使用(Jedis)

  1. 导入jar包
    Redis相关jar包
  2. 创建jedis对象
    Jedis jedis = new Jedis(host, port);
    
  3. 获取数据
    String string = jedis.get(name);
    
  4. 存储数据
    String res = jedis.set(key, value);
    
    Jedis简单使用

3.3 JedisPool(Jedis连接池)使用:

  1. 创建连接池配置
    JedisPoolConfig poolConfig = new JedisPoolConfig();```
    
  2. 配置连接池参数
    poolConfig.setMaxIdle(number);  // 最大空闲数
    poolConfig.setMinIdle(number);  // 最小空闲数
    poolConfig.setMaxTotal(number);  // 最大连接数
    
  3. 创建连接池
    JedisPool jedisPool = new JedisPool(poolConfig, host, port);
    
  4. 获取Jedis对象
    Jedis jedis = jedisPool.getResource();
    
  5. 操作
    。。。
  6. 关闭Jedis及连接池
     jedis.close();
     jedisPool.close();
    

Jedis连接池的基础使用

3.4 JedisPool(Jedis连接池)工具类的创建

Jedis连接池工具类
Jedis连接池配置文件

4 Redis五大基本数据类型及相关指令

注意:以下几乎所有指令都可在java中由Jedis对象‘.’来调出

4.1 字符串操作

set [keyname] [value]  #设置键值
get [keyname]  #通过键获取值
getset [keyname] [value]  #先根据键读取出值后设置值
del [keyname]  #删除键值
incr [keyname]  #键所对应的值自动加1,当创建值为null时默认值为0+1
incrby [keyname] [number]  #将键对应的值加number
decr [keyname]  #键所对应值自动减1,当创建值为null时默认值为0-1
decrby [keyname] [number]  #将键对应的值减number
append [keynumber] [string]  #将字符串拼接到值上,返回的数据为字符串长度

4.2 hash操作

hset [keyname] [filed] [value]  #将keyname所对应的hash的filed的值设置为value
hget [keyname] [filed]  #获取keyname键对应的hash数据的filed值
hmset [keyname] [filed1] [value1] [filed2] [value2]...  #设置keyname对应的hash类型数据下的多个filed对应的value
hmget [keyname] [filed1] [filed2] ...  #获取keyname对应的hash类型数据下的多个filed对应的value
hgetall [keyname]  #获取keyname对应的hash下的所有的键与值
hincy [keyname] [filed] [number]  #将指定的keyname对应的数据的filed的值加number(减的时候值设为负即可)

自学命令:
hexists [keyname] [filed]  #查看是否存在对应的filed
hlen [keyname]  #查看keyname对应的键值对的数量
hkeys [keyname]  #查看keyname对应的数据的所有key
hvals [keyname]  #获取keyname对应的所有val

4.3 list集合操作

lpush [listname] [val1] [val2] ...  #创建名为listname的集合,并添加元素val1,val2。。。该方式是向左边添加元素
rpush [listname] [val1] [val2] ...  #创建名为listname的集合,并添加元素val1,val2。。。该方式是向右边添加元素
lrange [listname] [number01] [number02]  #查看list中的元素
lpop [listname]  #弹出list左边的元素
rpop [listname]  #弹出集合右边的元素
llen [listname]  #查看元素的个数

自学指令:
lpushx [listname] [val]  #若listname存在,则向头部(右)插入元素否则不插入;
rpushx [listname] [val]  #若listname存在,则向尾部(左)插入元素否则不插入;
lrem [listname] [count] [val]  #从listname表中删除个数为count的名为val的元素(count>0是从左往右删,count<0是从右往左删);
lset [listname] [index] [val]  #从listname表中索引为index处添加元素val(index>0是从左往右添加,index<0是从右往左添加);
linsert [listname] [before|after] [val01] [val02]  #在名为listname的数据中的val01前或后添加val02元素
rpoplpush [listname01] [listname02]  #从listname01右边弹出一个元素添加在listname02头部

4.4 set集合操作

sadd [setname]  [val01] [val02] ...  #向set集合中插入元素val01、val02
smembers [setname]  #查看set中的所有元素
sismember [setname] [val]  #查看元素shifou存在,存在返回1 不存在返回0;
sdiff [setname01] [setname02]  #查看setname01中setname02没有的元素
sinter [setname01] [setname02]  #查看两个集合中相同的元素
sunion [setname01] [setname02]  #查看两个集合中不同的元素
scard [setname]  #查看集合中元素的个数
srandmember [setname]  #从集合中随机取一个元素;
sdiffstore [diffsetname] [setname01] [setname02] ...  #将不同的数据存储到diffsetname中
sunionstore [unionsetname] [setname01] [setname02] ...  #将所有数据存储到unionsetname中
sinterstre [intersetname] [setname01] [setname02] ...  #将所有的交集数据存储到intersetname中

4.5 sortedset集合操作

zadd [sset] [score] [val] [score] [val] ...  #将数据存储进sset有序集合中;
zrange [sset] [startnum] [endstart] [withscores]  #查询所有sset的数据并按照score的大小进行排序
zcard [sset]  #查询有序集合中元素的个数;
zscore [sset] [member]  #查询sset中对应的member的分数;
zrevrange [sset] [withscores]  #将集合中元素按照从大到小排序
zremrangebybank [sset] [startnum] [endnum]  #将sset中的从startnum到endnum数据删除
zremrangebyscores [sset] [minscore] [maxscore]  #将sset中的score从minscore到maxscore数据删除

4.6 其他指令

keys *  #查询数据库中的所有数据
key [str]*  #查询数据库中所有以str开头的数据
del [key1] [key2] ...  #删除数据库中的数据
exists [key01]  #查看key01是否存在
rename [key01] [key02]  #将key01重命名为key02
expire [key]  #设置过期时间单位‘秒’
ttl [key]  #显示离过期剩余的时间
type [key]  #显示key对应的值的类型
select [0-15]  #redis默认有16个数据库索引为从0-15,数字为几就为切换到哪个数据库,默认为数据库0
move [key] [0-15]  #将当前数据库中的key数据移到指定的数据库中
flushdb  #删除当前数据库中的数据
flushall  #删除所有数据库中的key
quit  #退出数据库
info  #获取数据库的信息及统计

5 消息订阅与发布及事务操作

5.1 消息订阅及发布

subscribe [msgname]  #订阅消息
psubscribe [msgname]*  #批量订阅消息
publish [msgname] [msg]  #向msgname订阅消息内发布msg

5.2 数据库事务

multi  #开启数据库事务,接下来执行的命令会在事务中排好队,当提交事务时一起执行
exec  #提交事务redis的事务多条语句中有错误,但是他仍会执行
discard  #事务回滚,将会将事务删除掉,不会再执行

6 Redis的持久化操作

  1. RDB(快照)的形式进行持久化
    优势:无需配置,大数据量的时候适用
    劣势:可能丢失数据,在某个时间点存储数据,但是由于其中的间隔中服务器挂掉,就会丢失上次节点到现在的数据
    存储的时机在redis.conf中来进行修改 save 60 1 指的是60秒内至少一个修改则创建快照
  2. AOF(日志)的形式进行持久化
    优势:安全
    劣势:数据量大的时候会非常卡
    (Redis4.0后有RDB+AOF混合持久化 优点:读写速度快,以AOF文件存储 缺点:可读性较差)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值