redis操作1 对存储String的操作

redis默认使用6379端口,默认具有16个数据库,初始默认使用0号库

redis与memcached三个区别

(支持数据类型多)memcached:string           redis:String List Set Hash Zset(有序集合)

(支持持久化)

(机制不同)memcached:多线程加锁(锁住票,挨个买票)           redis:单线程+多路复用(买票人让黄牛代买票)

 

value中的String的数据结构为可修改字符串,内部实现类似java中的arraylist使用预分配冗余空间方式减少频繁分配内存

(先分配了固定的长度,

当字符串小于1M 扩容 加倍空间

大于1M 扩容 增加1M空间)(字符串最大长度512M)

 

 

进入redis数据库

redis-cli

切换数据库

127.0.0.1:6379> select 1
OK

127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379>

查看当前数据库的key数量

dbsize

清空当前库

flushdb

清空所有库

flushall

放入一个key-value值(覆盖之前的)

set k1 mary

set k2 lucky

set k3 jack

放入且设置过期时间(覆盖之前的)(10秒)

setex k1 10 v1

设置新值同时返回旧值

getset k1 v2

放入多个key-value(覆盖之前的)

mset k1 v1 k2 v2 k3 v3

在不存在该key时才放入key(返回1设置成功,返回0已有该key)

setnx k1 mary

放入多个key-value   在不存在该key时才放入key(返回1设置成功,返回0已有该key)(原子性,当有部分失败了都不会成功)

msetnx k1 v1 k2 v2 k3 v3

给key设置过期时间(过期就删了)

expire k1 10(10秒)

查看还有多久过期  (-1永不过期,-2已过期)

ttl k1 

获取key对应的value

get k1

获取多个key对应的value

mget k1 k2 k3

获取key对应的value的一部分(从下标0 到1 )

getrange k1 0 1

在指定下标后修改新的value(在下标1 后连同下标1修改为abc)返回长度

setrange k1 1 abc

修改前

127.0.0.1:6379> get k1
"abc"

修改后

127.0.0.1:6379> get k1
"aabc"

在key对应的value后添加String(abc) 返回添加后的字符长度

append k1 abc

获得key对应value的长度

strlen k1

redis的加减操作是原子操作,在运行时多线程中不会发生切换线程的操作

java中的自增减操作不是原子操作,两个线程将i=0值i++ 100次 会出现切换线程最终值不同 范围( 2~200)

 

 

在value值为数字时,自增+1数字(返回自增后的数字)

incr k1

在value值为数字时,自减-1数字(返回自减后的数字)

decr k1

在value值为数字时,增加数字(20)(返回增后的数字)

incrby k1 20

在value值为数字时,减少数字(20)(返回减后的数字)

decrby k1 20

查看所有key值( keys *1         *代表通配符匹配所有后面带有1的key)

 keys *

判断是否存在key(返回integer 0为没有1为有)

exists k1 

查看key为什么类型

type k1

删除key

del k1(直接删除)

unlink k1 (非阻塞删除,只从元数据中删除,真正的删除在之后的异步操作中)

 

posted @ 2021-08-05 16:37  低调的。。。  阅读(282)  评论(0编辑  收藏  举报