Redis入门教程

1. Redis应用场景

  • 缓存
  • 任务队列
  • 应用排行榜
  • 网站访问统计
  • 数据过期处理
  • 分布式集群架构中的session分离

2. Jedis入门

Jedis是Redis官方首选的java客户端开发包。https://github.com/xetorthio/jedis

Jedis jedis = new Jedis("localhost");
jedis.set("foo", "bar");
String value = jedis.get("foo");

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster nodes automatically
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo", "bar");
String value = jc.get("foo");
set name mark
get name
del name

incr num # 默认从0开始
decr num

incrby num 2 # num += 2
decrby num 3 # num -= 3

append num 5 # 玩后追加,如果num没有,则相当于set num 5

Redis数据结构

Hash
## set
hset myhash username jack
hset myhash age 18
hmset myhash2 username rose age 21

## get
hmget myhash usename age
hgetall myhash

## delete
hdel myhash2 username
hdel myhash2 username age
del myhash2

## increase
hincreby myhash age 5

## verify if exists
hexits myhash username

## get length
hlen myhash

## get all values
hvals myhash
List
  • ArrayList使用数组方式
  • LinkedList使用(使用双向链表方式)
## push
lpush mylist a b c # push from left
rpush mylist c b a # push from right

## get
lrange mylist 0 5
lrange mylist 0 -1

## pop
lpop mylist
rpop mylist

## length
llen mylist

lpushx mylist x
rpushx mylist y

## delete
 lrem mylist 2 3 # delete 2 个 3
lrem mylist 0 -1 # 

lset mylist 3 value # mylist[3]=value
linsert mylist before b 11 #在第一个值为b的位置前插入11

lpoplpush mylist1 mylist2 #将mylist1中的值pop然后加入到mylist2
Set

set集合不允许出现重复值,如果重复添加只保留一份拷贝。

sadd myset a b c
sadd myset a
srem myset a
smembers myset

sismember myset a # 1: exist; 0: no exist
sunion myset1 myset2 # 并集运算
scard myset # len of myset
srandmember myset # 随机返回myset的value
sdiffstore myset1 myset2 myset3 # 求差集并存到myset1
sinterstore myset1 myset2 myset3 # 求交集并存到myset1

sorted-set

Keys通用操作

keys * # select all keys
keys my?
del mylist1
exists mylist1
rename mylist1 newmylist1
expire newmylist1 1000 #set expore time: 1000s
ttl newmylist1 # 剩余有效时间
type mylist # query type

Redis的特性

多数据库

可以有多个实例。最多可提供16个。默认连接第0号数据库。

select 0
move myset 1#将1号数据库中的myset移动到1号数据库
事物

保证命令原子化执行。

multi 		# 开启事物
exec 		# 提交事物
discard 	# 回滚事物

Redis持久化

Redis将内存中的数据同步到硬盘中称为持久化。

持久化使用的方式:

  • RDB持久化(在指定的时间内将内存中的数据中快照到磁盘中)
  • AOF持久化(以日志形式存储操作)
  • 同时使用RDB和AOF持久化
  • 无持久化
RDB持久化

可以设置每个小时归档一次,每天归档一次。

优点:避免了频繁的进程IO切换
缺点:如果服务器宕机一段时间了,那么某段时间的数据就会丢失。

redis.conf 默认配置文件

save 900 1 		# 每900s至少有1个key发生变化,做一次持久化操作
save 300 10		# 每300s至少有10个key发生变化,做一次持久化操作
save 60 10000	# 每60s至少有10000个key发生变化,做一次持久化操作

dbfilename dupm.rdb # 导出的文件名

dir ./ # 存储至redis当前路径下
AOF持久化

优势:
日志采用append方式,就算宕机了,不会影响之前的日志文件。
如果日志过大,可以新增日志文件。这样可以更好的保证数据的安全性。

劣势:
每修改就同步,效率相对较低

配置:
redis.conf

appendanly no # 默认不启用AOF,no改为yes则启用

## 三种AOF策略
appendfsyn always 		# 每修改一次写入硬盘
appendfsync everysec 	# 每秒同步
appendfsync no			# 不同步

Redis的启动和关闭

./bin/redis-cli shutdonw		 	# 断开连接
./bin/redis-server ./redis.conf 	# 启动redis
./bin/redis-cli						# 连接redis客户端
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值