java redis 原子操作_redis快速入门

Redis服务的启动

redis-server.exe redis.windows.conf

连接Redis服务器

redis-cli.exe -h 127.0.0.1 -p 6379 (p代表的是port-端口)

Redis简介

Redis 是完全开源免费的,遵守BSD协议,是一个基于内存的高性能的key-value数据库。

Redis 的三个特点:

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis提供了丰富的类型,如string,list,set,zset,hash共五种数据结构。都是key-value的结构

Redis支持数据的备份,即master-slave模式的数据备份。

优势

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis相关命令

Redis支持五种数据类型

string(字符串)

hash(哈希)

list(列表)

set(集合)

zset(sorted set:有序集合)

基本命令

set name xiaoming 存值 set key value

get name 取值 get key

keys * 取出所有的key

expire name 60 设置过期时间(单位秒) expire key time

ttl name 查看剩余时间 ttl key

exists name 查看是否存在某个key exists key 返回0表示不存在,1存在

del name 删除 del key

type name 查看类型 type key

string

string是redis最基本、最常见的类型,一个key对应一个value ,类似于java中的String类型

string类型是二进制安全的

赋值语法

set key value

set命令用于设置给定key的值。如果key已经存在,那么会覆盖旧值,且无视类型

setnx key value (应用:分布式锁)

只有在key不存在时才设置key的值,如果已经存在,则不设置。

取值语法

get key

get命令用于获取指定key的值。如果key不存在,返回nil 。如果key存储的值不是字符串类型,返回一个错误

getrange key start end 截取字符串(类似于java中substring)

用于获取存储在指定key中字符串的子字符串,字符串的截取范围由start 和 end 两个偏移量决定

getset key value 取出旧值并设置新值 (登录 数据库表 zhangsan 123 登录时间)

getset命令用于设置指定key的值,并返回key的旧值,当key不存在时,返回nil

strlen key

返回key所存储的字符串的长度

删除语法

del key

删除指定的key

自增/自减

incr key

incr命令将key中存储的数字值加1。如果key不存在,那么key的值会先被初始化为0,然后在执行incr操作

incrby key 增量值

incrby命令将key中存储的数字加上指定的增量值

decr key

decr命令将key中存储的数字减1

decrby key 减值

decrby 命令将key中存储的数字减去指定的值

应用场景

1. string通常用于保存单个字符串或json字符串数据

2. 因string是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储

3. 计数器(常规计数:点赞数、粉丝数,关注,取消关注等)

4. incr等指令本身具有原子操作的特性,所有我们完全可以利用redis的incr、incrby、decr、decrby等指令来实现原子计数的效果。假如在某种场景下3个客户端同时读取了mynum的值(为2),然后对其同时进行了加1的操作,那么mynum的值最后一定5。不少网站利用了redis的这个特性来实现业务上的统计计数需求。

hash

redis的hash是一个string类型的field和value的映射表(类似于java的对象),hash特别适合存储对象。

赋值语法

hset key field value

为指定的key,设定field/value

hmset key field value [field1 value1,field2 value2...]

同时向key的hash中设置多个field/value对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值