Redis
定义
Redis是一个高速缓存数据库,是一种key-value(键值对)形式的存储系统,非关系型数据库
特点
Redis的数据 是放在内存里的,所以读写会很快,Redis才能实现持久化(RDB、AOF)
支持持久化
支持多种数据结构
支持数据备份
五种数据结构
string
单key:单value (username:张三)
常用指令(这里简单举几个例子 )
- 将string类型的数据设置到redis中:set 键 值
保存张三:set name zhangsan- 从redis中获取string类型的数据:get 键
获取键名为name的值:get name
list
单key:多有序value (contacts:12534,XXX1,XXX2)
- 将一个或者多个值依次插入到列表的表头(最左侧):lpush key value [value]
lpush list01 1 2 3 结果:3 2 1- 获取指定列表中的指定下标区间的元素:lrange key startIdex endIndex
range list01 1 2 结果:2 1- 从指定列表中移除并且返回表头元素(最左侧元素):lpop key
lpop list02- 获取指定列表的长度:llen key
llen list02- 从指定列表中移除并返回表尾元素:rpop key
rpop list02
set
单key:多无序value (city: bj、sh、cq、tj)
- 将一个或者多个元素添加到指定的集合中:sadd key value [value value …] (返回成功插入的元素个数)
sadd set01 a b c a 结果:a b c- 获取指定集合中所有的元素:smembers key
smembers set01- 获取指定集合的长度(元素的总个数):scard key
scard set01- 移除指定集合中一个或者多个元素:srem key member [member member …](不存在的元素会被忽略,返回成功移除的元素个数)
srem set01 b d m
hash
单key:对象(属性:值) 存储对象 (student id:1001,name:zhangsan) (适合用于存储对象)
- 将一个或者第一个field-value对设置 到哈希表汇总:hset key filed1 value [filed2 value2] (如果key field已经存在,把value会把以前的进行覆盖)
hset stu1001 name zhangsan age 20- 获取指定哈希表汇总指定field的值 :hget key field
hget stu1001 id- 批量将多个field-value对设置到哈希表中:hmset key filed1 value [filed2 value2]
hset stu1002 id 1001 name zhangsan age 20- 获取指定哈希表中所有的field和value:hgetall key
hgetall stu1001- 将指定哈希表中删除一个或者多个field:hdel key field1 field1
hdel stu1002 name age
zset
单key:多有序value (city:2000 bj) 自定义排序规律(有序集合,本质上是集合,所有元素不能重复, 每一个元素都关联一个分数,分数可以重复)
- 将一个或者多个member及score值加入有序集合 :zadd key score member score1 member1(如果元素以存在 ,则把分数覆盖)
zadd zset01 20 z1 30 z2 50 z3 40 z4- 获取指定有序集合中指定下标区间的元素:zrange key startIndex endIndex
zrange zset01 0 -1 withscores- 删除指定有序集合中一个或者多个元素:zrem key member member1…
zrem zset01 z3 z4- 获取指定有序集合中所有元素的个数:zcard key
zcard zset01
事务
定义
把一组数据库命令放在一起执行,保证操作原子性,要么同时成功,要么同时失败。
redis的事务:允许把一组redis命令放在一起,把命令进行序列化,然后一起执行,保证部分原子性。
multi
用来标记一个事务的开始。
multi
set k1 v1
set k2 v2
exec
用来执行事务队列中所有的命令。
exec
discard
清楚所有已经压入队列中的命令,并且结束整个事务。
discard
redis事务只能保证部分原子性
如果一组命令中,在压入事务队列过程中发生错误的命令,则本事务中所有的命令都不执行,能够保证事务的原子性。
multi
set k3 v3
seta kk vv
set k4 v4
exec
使用Java连接redis进行操作
- 创建一个maven项目
- 在pom文件中添加redis依赖
<dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.3</version> </dependency> </dependencies>
- 创建一个类,通过jedis访问redis,放入下面的这段代码
public static void main(String[] args) { //连接redis: Jedis jedis=new Jedis("IP",端口); // Set<String> keys= jedis.keys("name"); // for (String key:keys){ // System.out.println(key); // } String name = jedis.get("name"); System.out.println(name); if(name.equals("zhangsan")){ System.out.println("成功获取到张三"); } }
运行当前类,在控台中即可看到通过redis查询到的数据
redis常用指令
关闭虚拟机
shutdown -h now
启动redis后台服务
redis-server &
启动redis客户端
redis-cli
启动指定IP和端口的:redis服务
redis-cli -h xxxx -p 6380
关闭指定IP和端口的:redis服务
redis-cli -h xxxx -p 6380 shutdowm
关闭redis
redis-cli shutdown
查看redis是否启动
ps -ef |grep redis
查看redis配置文件
vim redis.conf
需要进行修改、删除、新增时,先按e键,进行编辑,编辑完成后按 :wq保存即可
查看虚拟机ip地址
ip addr