redis 命令小结

1.对键的操作
//设置键对应的值
set xxx  123
del xxx

//判断一件键是否存在
exists 键名

//设置一个KEY的过期时间
expire xxx 10   10秒过期

pexpire xxx 10  10毫秒过期

//删除过期时间
persist xxx   过期之前做才有意义

//查找符合某个模式的KEY
keys xxx*  查找以xxx开头的key
keys * 查找所有的key

//将当前库中的key移到某个数据库中
move xxx  1  将键名为xxx的移到库1中,如果有同名key,则不能移动

//选择某个库。 默认第0个库。一共16个库
select 0
select 1

127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set catname tom
OK
127.0.0.1:6379> get catname
"tom"
127.0.0.1:6379> exists catname
(integer) 1
127.0.0.1:6379> move catname 1
(integer) 1
127.0.0.1:6379> exists catname
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get catname
"tom"
127.0.0.1:6379[1]> exists catname
(integer) 1

//清空数据库
flushdb

//随机返回一个key
randomkey

//查看key对应的value的数据类型
type xxx 查看键的类型

===========================

redis 对value的操作

1.对字符串的操作

//设置与取值
set key1 dog
set key2 "a b c d"
get key1
get key2

//getrange键名 开始 结束
getrange key2 5 7  从5取到7
getrange key2 5 -1 从5取到末尾

//getset key2 cat 给键设置一个新值,并且返回原来的旧值

//mget 多个key 同时返回多个key对应的值
mget key1 key2 key3

//去value 的长度
strlen key1

//对某个key所对应的value进行自增,自减(如果不存在,会自动设置key)
incr key1
decr key1
decrby key1 100 一次减100

//在key上增加值
append key1 "abc"

2.对hash的操作

//同时设置多个值
hset key1 username "admin" password "123" school "ccc"

hgetall key1 得到所有值

//hvals key1 得到所有value的值

//删除一个或多个key
hdel key1 username
hdel key1 username password

//查看一个字段 在hash表中是否存在
hexists key1 username  

//取出某个字段的值
hget key1 username 
hmget key1 username

//hincrby 键 值  为字段加上指定的值
hincrby key1 age 10

//hkeys key1  得到所有key

//hlen key1  得到字段的长度,即有几个字段

3.对列表的操作

//列表里面放数据
lpush key1 a b c d 依次往左边加
rpush key2 a b c d 依次往右边添加

//列表里面取数据
lrange key1 0 -1

//弹出列表中数据
lpop key1 从左依次删数据

//得到列表长度
llen key1

//通过索引访问
lindex key1 2 从左边取下标为2的数据

//blpop 在限时弹数据
blpop key1 10  10秒内弹数据,如果没有数据,返回null

//移除元素
lrem key count value 从列表中移除和value值相等的元素,count 表示数量

//给某个索引设值
lset key1 2 "abc" 给下表为2的设定值

//剪切
ltrim key1 0 1  只保留下表0 1值

//rpushx key value 为已存在的列表添加值,如果列表不存在,返回0
rpushx key1 100

3.redis ---set集合(元素没有顺序,没重复)

//sadd key1 a b c d e 增加数据
//smembers key1    取出数据
//scard key1   得到元素个数
//sdiff key1 key2   得到key1-key2数据
//sdiff key2 key1   得到key2-key1数据
//sdiffstore key3 key1 key2   将key1-key2的数据放到key3里面
//sinter key1 key2  key1 key2的共同元素
//sismember key1 fish  查看key1里面是否有fish成员
//smove key1 key2 fish 将key1里面的fish 移动到key2
//spop key1 移除一个元素并且返回该元素
//srandmember key1 2  随机取两个元素,不删除
//srem key1 a b  移除ab两个元素
//sunion key1 key2 key3 去并集

//sunionstore keynew key1 key2 key3 将123并集元素放到new里面    

=============
总结
哈希类型
hset userinfo username "abc"
hmset userinfo username "abc" password "123"

hget userinfo username
hgetall userinfo

列表集合
lpush userinfo a b c d 
lrange userinfo 0 -1

Set类型
sadd userinfo a b c d
smembers userinfo 

=======================================

有序集合,zset  它和set一样,不会重复,但有序

//zadd key1 1 a    1为排序的分数。 a为值
//zrange key1 0 -1  查询元素从小到大
//zrevrange key1 0 -1 查询元素从大到小
//zrange key1 0 -1 withscores 查询元素带分数
//zcard key1   得到元素个数
//zcount key1 2 3  查询2-3的元素个数
//zincrby key1 10 a 将a的score 增加10,如果a不存在,相当于增加一个10 a
//zscore key1 values 取值的分数
//zrem key1 value 删除一个值
//zrank key1 value 取值的索引

=======================================

HyperLogLog 基数估算

HyperLogLog 可以接受多个元素作为输入,并给出输入元素的基数估算值

基数:集合中不同元素的数量 {1,2,3,1,2,3,4} 它的基数是4

估算:算法给出的基数不是完全精确的,但会控制在合理的范围内,一般用于大数据,便捷运算

HyperLogLog  本身不会存储这些元素,所以它不能像集合那样,返回输入的元素

//pfadd key1 a b c d a b c 增加一个key1的集合
//pfcount key1   计算基数
//pfmerge key1 key2 合并集合到key1

=========================================
redis 订阅与发布

//subscribe chat1  订阅chat1频道
//unsubscribe chat1 退订chat1频道
//psubscribe java* 订阅所有java开头的频道
//punsubscribe java* 退订。。。。
//publish chat1 "hello ni hao" 发布消息

//pubsub channels  查看订阅频道

//pubsub numsub chat1  查看频道订阅数量


============================================
redis 中的事务

 redis事务可以一次执行多条命令

 1.事务是一个单独的隔离操作,事务中所有的命令都会序列化,按顺序执行,执行过程中,不会被其他的客户端发送的命令打断。

 2.事务是一个原子操作,事务中的命令,要么全完成,要么一个也不执行。

 一个事务从开始执行到完成,要有以下三个阶段:

 开始事务
 执行命令
 提交事务

 //multi  打开事务
 127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> sadd myset a b c
QUEUED
127.0.0.1:6379> lpush mylist aa bb cc
QUEUED
127.0.0.1:6379> exec
1) (integer) 3
2) (integer) 3
127.0.0.1:6379>

//discard 取消事务

================================================
redis 服务器管理

//BgRewriteAof  异步执行一个aof(appendOnly  file)文件重写操作,重写

会创建当前一个AOF文件体积的优化版本

RDB持久化策略。

redis 数据备份有两种,一种是已日志来做,一种已RDB.

//BgSave 后台异步保存数据到磁盘上,会在当前目录下创建文件 dump.rdb

//save  同步保存数据到磁盘上,会堵塞主进程,别的客户端无法连接

//client list 列出所有的客户端

//client kill 关闭客户端连接
client kill 127.0.0.1 49262   40262为随机端口

//client setname myclient1  给客户端设置一个名称
//client getname 得到客户端名称

//config get port  得到配置文件的端口号

//config rewrite  对redis的配置文件进行改写
config set loglevel notice
config rewrite
修改配置文件,永久有效

//config set 命令,可以对服务器的配置进行改写,临时一次有效。

//dbsize 返回当前数据库中的key数量。 keys * 可以查看key有哪些

//flushall 删除所有数据库中的所有key

//debug segfault 让redis数据库崩溃

//info查看相关信息
info cpu 
info memory

=============================================
reids 安全设置
通过redis的配置文件设置密码参数,客户端连接的时候要提供密码
//查看是否设置了密码
config get requirepass

//设置密码
config set requirepass admin123   

//提供密码,进行登录
auth admin123

//最大连接数
config get maxclients  默认10000

//返回连接到服务端的客户端
client list

//挂起客户端
client pause 5000   挂起5000毫秒

============================================
redis 在java中使用
下载jar包或者下载maven依赖

Jedis redis = new Jedis("localhost",6379);
reids.auth("admin123");
sout(reids.ping());
redis.close();

//对String 类型进行操作


//对于在java中添加的中文数据在命令行窗口乱码问题
1.chcp 65001
2.启动命令行的时候加参数 reids-cli --raw

============================================
redis 工具类-连接池
commons-pool2-2.4.2

JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(1024);//最大连接数
config.setMaxIdle(200);//最大空闲时
config.setMaxWaitMillis(10000);以毫秒计算,-1为永不超时
config.setTestOnBorrow(true);borrow一个实列的时候,是否提前进行

JedisPool pool = new JedisPool(config,ip,port,tiomeout,auth);

==============================================
redis 在其他数据类型的应用

redis.lrange("a",0,-1);
redis.sort

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值