Redis基础

数据类型

字符串(String)

  • 二进制安全的,存入和获取的数据相同
  • Value最多可以容纳的数据长度是512M

常用操作

set name jack	//"ok"	设置一个key为name 值为jack
get name	//"jack"	获取key为name的值
getset name rose	//"jack"	获取name的值并设置name的值为rose
del name	//(integer)1	删除name这个key 返回删除结果个数
incr num	//(integer)1	给num的值+1,如果之前没有设置,初始化值为0,如果num之前不为数字,则报错
decr num2	//(integer)-1	给num2值-1,因为没设置过值,直接0-1=-1
incrby num 5	//(integer)6	给num +5,之前为1,+5后结果为6
decrby num3 5	//(integer)-5	给num3 -5,之前没有设置过num3,初始为0,-5=-5
append num 0	//(integer)2	在num后面接上0,返回长度
get num		//"60"

哈希(hash)

  • String Key和String Value的map容器
  • 经常用于存对象

常用操作

hset user username jack	//(integer)1	设置一个user的map,里面有key为username值为jack的一条数据
hset user age 25	//(integer)1	给users添加一条数据
hmset user2 username rose age 21	//OK	一次添加多条数据
hget user username	//"jack"	获取user里username的值
hmget user username age	//"jack" "25" 一次获取多条数据
hgetall user2 //"username" "rose" "age" "21"	获取所有信息
hdel user username age //(integer)2	删除map中的age这条数据
del user2	//(integet)1 删除map
hincrby user age 5	//(integer)30  给user中的age+5
hexists user username //(integer)1	判断user中是否有username字段 没有返回0
hlen user	//(integer)2	返回user长度
hkeys user	//返回所有key
hvals user	//返回所有值

字符串列表(list)

  • ArrayList
  • LinkedList

常用操作

lpush list1 a b c //(integer)3 在list1左侧添加a b c 返回添加后的长度 如果list1没有定义就创建一个空的
rpush list1 1 2 3 //(integer)6 在list1右侧添加数据
lrange list1 0 5 //"c b a 1 2 3" 读取list1 0-5的数据 位置可以为负数 从列表尾部读取
lpop list1 //"c" 从list1左侧弹出 返回弹出的数据 rpop从右边弹出
llen list1 //(integer)5 长度
lpushx list1 a //(integer)6 当list1存在的时候插入a  此时list1为“a b a 1 2 3"
lrem list1 2 a //(integer)2 删除list1从左边开始2个a  此时list1为”b 1 2 3"
lrem list1 -2 a //从尾部开始删除2个a
lrem list1 0 a  //删除所有a
lset list1 3 mm //在list1的第三个位置插入mm 如果有了就替换
linsert list1 before b 11 //在list1的"b"前插入"11"  after为后
rpoplpush list1 list2 //把list1的尾部弹出添加到list2的头部  使用场景:消息队列,防止丢失

字符串集合(set)

  • 不允许重复元素
  • 跟踪一些唯一性数据
  • 用于维护数据对象之间的关联关系

常用操作

sadd set1 a b c//(integer)3 在set1添加元素
srem set1 a b //(integer)2 删除元素
smembers set1 //获取全部元素
sismember set1 c //判断是否存在于
sdiff set1 set2 //获取两个set不同的部分
sinter set1 set2 //获取两个set的交集
sunion set1 set2 //并集
scard set1 //获取长度
srandmember set1 //随机获取set中的一个元素
sdiffstore set0 set1 set2 //把set1和set2相差的元素存入set0 还有sunionstore/sinterstire

有序字符串集合(sorted set)

  • 有序
  • 使用场景:排名,热点
zadd set1 20 zhans 30 lisi 40 wangwu//(integer)3 传入数据的分值来排序 返回添加的个数
zscore set1 zhans //"20"获取zhans的分值
zcard set1 //(integer)3 获取set长度
zrem set1 zhans //(integer)2 删除元素
zrange set1 0 -1 //显示set的所有元素 从小到大
zrange set1 0 -1 withscores //显示所有元素和分值
zreverange set1 0 -1 //从大到小显示
zremrangebyrank set1 0 4 //删除排名0到4的元素
zremrangebyscore set1 20 40 //删除分值20-40的元素
zrangebyscore set1 0 100 withscore limit 0 2  //显示分值0-100的前2个元素和分值
zincrby set1 3 lisi //给lisi加3分值
zcount set 20 40  //显示20到40分值的元素的个数

keys的操作

keys *  //显示所有的key
keys my? //显示my开头的key
del my1 my2 //删除my1,my2
exists my3  //判断是否存在
rename my1 my2 //把my1重命名为my2
expire my1 1000 //给my1设置超时时间(秒)
type my1 //显示my1的类型

特性

多数据库:0-15共16个数据库

select 0	//选择0号数据库
move user1 1	//移动key到其他数据库

支持事务

multi	//开始事务
exec	//提交事务
discard	//回滚

持久化

RDB持久化

在指定的间隔,把内存中的数据写入到磁盘

AOF持久化

以日志的方式,记录操作,启动的时候根据日志来恢复

你可能感兴趣的:(redis)