Redis基础知识总结

技术文档:

http://www.runoob.com/redis/redis-tutorial.html

 

 

Jedis介绍

Jedis是Redis 官方首选的java客户端开发包

http://github.com/xetorthio/jedis

Jedis-jar url

下载地址: https://mvnrepository.com/artifact/redis.clients/jedis

                #Redis 的数据结构

· 1

· 2

五种数据类型:

字符串(String) , 哈希(hash) ,字符串列表(list) , 字符串集合(set),有序字符串集合(sorted set) 
常用的是字符串和哈希

Key的定义注意点:

不要过长

不要过短

统一的命名规范

存储String

常用命令:

赋值: set company imooc ,取值就可以通过 get company 获得 imooc

getset命令: getset company baidu 结果:imooc 然后 get company 结果: baidu .getset key value 就是先获得key后更改value

删除 del key ,比如: 先设置 key 和value set person jack ,del person 返回数字1,如果再去获得get person 结果: nil 代表不存在

扩展命令

取值

数值增减

递增 incr num 默认就是0,而get num 的结果就是 1 。

同理 decr num2 默认也是0 而get num 的结果即使 -1 。

incrby num 5 就是通过 num+5的结果。一般num默认是0,现在应该就是5

同理decrby num2 5 结果就是-5

存储Hash

String key和value的map容器

每一个Hash可以存储4294967295个键值对

hset key field value 命令:

例子:

赋值 
hset myhash username jack

hset myhash age 18

其中 myhash 就是key 而username 和age都是字段名称,而后面的值局势字段里的值。这和map的集合有一点区别

hset myhash2 username jack age 18

删除: hdel myhash2 结果就是: empty list or set

如果在接着去删除 hdel myhash2 username 结果 0 
删除没有的字段就返回0

存储list:

ArrayList使用数组方式

LinkedList使用双向链接方式

双向链表中增加数据

双向链表中删除数据

存储list常用命令:

两端添加 查看列表 两端弹出 获取列表元素个数 扩展命令

命令: lpush key value[value] 
lpush mylist3 a b c 1 2 3

命令: lrange key start stop 
取出: lrange mylist3 0 5 结果就是 3 2 1 c b a 这和java 中list集合有一点区别 
当然也可以这样取值 lrange mylist3 0 -1 ,结果和上面还是一样的。0代表第一个元素,而-1 代表最后一个元素

命令: 
lpop key 移出并获取列表的第一个元素

llen key 获取列表长度

rpop key 移出并获取列表的最后一个元素

lpush key value 插入到已存在列表头部,

rpush key value 插入到已存在列表尾部

lpushx key value 同理也是插入到列表头部

rpushx key value 同理也是插入到列表尾部

lpushx mylist3 x ,通过查看 lrange mylist 0 -1 得 x 3 2 1 a b c

存储set

list类型不同的是,set集合中不允许出现重复的元素

set可包含的最大元素数量是4294967295

存储set常用命令

添加/删除元素 获得集合中的元素 扩展命令

集合中的差集运算 集合中的交集运算 集合中并集运算

元素添加:

sadd myset a b c 结果为 3

sadd myset a 结果为0

sadd myset 1 2 3

删除元素

srem myset 1 2 结果就是: a b 3 c

判断元素是否存在 
sismember myset a 存在返回 1 不存在就返回0

差集运算: sdiff key[key]

交集运算 sinner key [key ]

显示集合中所有的元素 SMEMBERS key

显示集合中成员数量 SCARD key

返回集合中的一个或多个成员 srandmember key[count]

存储Set使用场景

跟踪一些唯一性数据

用于维护数据对象之间的关联关系

Redis的Keys的通过操作

keys * 查看所有的key 
del my1 my2 my3 删除某些key

exists my1 查看key是否存在 返回0是存在,1不存在

rename company newcompany 重命名为newcompany

expire key 1000 为key设置过期时间

TTL key 
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

Redis特性

相关特性

多数据库

redis事务

多数据
默认是0号数据库

select 0 ,当然也可以移动数据库 move myset 1 就是将0中的myset移动到myset

MULTI 
标记一个事务块的开始。

EXEC 
执行所有事务块内的命令。

DISCARD 
取消事务,放弃执行事务块内的所有命令。

 

1、五大数据类型

String     字符串

list 字符串列表

set 字符串集合

hash 哈希

sorted set 有序字符串集合

 

2、Redis 事物

与关系型数据库不同,一个事物执行失败,他后边的事物继续执行,不会被打断!

 

 

3、Redis多数据库

 

4、Redis持久化

Redis所有的数据都存在内存中,从内存当中同步到硬盘上,这个过程叫做持久化过程。

 

方式:

RDB持久化:

指定时间间隔然后写入硬盘

 

AOF:

以日志形式,记录服务器每一个操作;Redis服务器启动时读取该文件来重新构建数据库,保证数据完整性。

 

 

配置可以禁用 持久化功能
也可以同时使用两种方式

 

 

5、RDB持久化

优势:

只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)

 

劣势:

如果宕机数据还没向硬盘中写,数据就会丢失,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了

 

 

 

6、AOF持久化

优势:

 

1. 带来更高的数据安全性。有三种同步策略。每秒同步、每修改同步、不同步。
2.AOF 文件是一个只进行追加操作的日志文件,因此在写入过程中即使出现宕机现象也不影响之前已经存在的内容。
3.如果日志过大,redis可以启动重写机制。在重写过程中产生的对数据库操作记录会保存在一个新文件中,等到重写完成后再追加到现有的文件中。
4.AOF 文件有序地保存了对数据库执行的所有写入操作

 

 

劣势:

1. 对于相同数量的数据集而言,文件比rdb方式要大。
2.效率比RDB

 

 

有操作步骤。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值