深度解析:Redis实战技巧与心得分享

更新:10-27 民间故事 我要投稿 纠错 投诉

其实深度解析:Redis实战技巧与心得分享的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享深度解析:Redis实战技巧与心得分享的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

1.常用命令

contains key #检查key是否存在

type key # 获取key保存的value类型

ttl key # 获取key的剩余过期时间

expire key times #设置key的过期时间,单位为秒

expireat key timestamp #设置key的过期时间为时间戳的秒值

del key1 key2 . # 删除多个key并返回删除的key的数量

keys key* # 返回所有匹配的键,性能极差,不宜在生产环境中使用

2.Strings操作命令

set key "test" # 添加键值,永不过期

set key "test" 10 # 有效期10s

strlen key # 获取value的字符长度

set key "test" NX EX 10 # 当key不存在时,添加,有效期10s;该命令可用于开发分布式锁

incr key # 对于数字类型,该命令会加一。如果是非数字类型,则会返回错误。

decr key # 对于数字类型,此命令减一。如果是非数字类型,则会返回错误。

mset key1 value1 key2 value2 # mset 是一个原子操作。它一次批量设置多个键值。与普通的设置操作一样,现有的键将被覆盖。

msetnx key4 value4 key1 value1 # msetnx 当任何设置的键已经存在时,操作将失败,并且不会保存任何键值。

3.Hash操作命令

hset key field value #设置key中的field-value键值是的,要设置hash数据的过期日期,可以使用expire命令

hget key field # 获取指定key下的field对应的值

hkeys key # 返回指定key包含的所有字段

hvals key # 返回指定key中包含的所有值

hlen key # 返回某个key下的字段个数

hmset key field1 value1 field2 value2 # 批量设置多个key-value

hmget key field1 field2 # 批量获取多个key的值

hgetall key # 返回key包含的键和值数组

hexists key field # 检查某个字段是否存在

hdel key field #删除key中指定的字段。如果是最后一个字段,则整个key被删除

4.List操作命令

lpush key value1 value2 #从左边入队多个值

lpushx key value1 # 只有当key存在时,value才会从左开始排队

rpush key value1 value2 #从右边入队多个值

rpushx key value1 #只有key存在时,才让value从右边进入队列

lrange key start end # 从左到右查询列表中从start到end(包括end)有下标的元素。索引下标从左到右为0到N,从右到左为-(N+1)到-1。lrange key 0 -1表示查询所有元素;该操作不会从列表中删除查询的元素。

llen key # 获取key中所有值的个数

lset key index newValue # 修改列表中指定下标的元素

lindex key索引# 获取指定下标的值

lpop key # 从列表左侧弹出元素,并将弹出的元素从列表中移除

rpop key # 从列表右侧弹出元素,并将弹出的元素从列表中移除

lrem 键计数值# 删除|count|元素数量等于值。如果count0,则从head-tail中删除;如果count0,则从tail-head中删除;如果count=0,则删除所有等于value的元素。的元素

blpop key key1 timeout # 阻塞方法返回列表中第一个非空的头元素。返回值是一个包含列表名称和元素的数组。

brpop key key1 timeout # 阻塞方法返回列表中第一个非空的尾部元素。返回值是一个数组,包含列表名称,元素

5.Set操作命令

Sadd key value value1 # 添加值

scard key # 返回key中的元素个数

smembers key #返回key中的所有元素

sismember key element # 判断该元素是否在Set中

srandmember key [count] # 从Set 中随机返回count 个元素。如果不指定count,则默认返回1个元素,并且不会移除该元素。

spop key # 从Set中随机弹出一个元素并移除弹出的元素

smembers key # 获取所有元素

sinter [key …] # 查找多个Set 的交集

sunion [key …] # 求多个Set的并集

sdiff [key …] # 求多个Set的差异集。 key1和key2的差分集结果就是key3的差分集,以此类推。

sinterstore destination [key …] # 将多个Set的交集保存到destination

sunionstore destination [key …] # 将多个Set的并集保存到destination

sdiffstore target [key …] # 将多个Set的差异保存到destination。使用场景:

Set 类型提供集合的交集、并集和差集运算。更适合的场景是tag。

例如,为用户添加标签,通过交集可以找到用户的共同标签;

通过将用户添加到标签中,可以通过交集找到具有共同标签的用户。

6.Server命令

info #查看当前redis服务器运行信息

dbsize # 返回当前db中保存的key的数量

select x #切换db,不存在的db会自动创建。如果项目中切换db,则需要重建连接。

client list # 查看客户端相关数据,可以通过这个来判断当前连接使用的是哪个db

swapdb 0 1 # 两个db之间转换数据并立即生效

lushdb # 清除当前db的所有key-values

lushall # 清除所有db的所有Key-values

7.Eval执行Lua脚本

1.直接执行lua函数

eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 第一第二个描述:

1).eval命令参数

第一个参数是脚本内容,第二个是KEYS的数量n,后面的n个参数都是KEYS的剩余部分。你可以使用ARGV来获取它。 2) .eval命令注意事项

eval中的KEYS和ARGV区分大小写,必须全部大写。

2.执行lua script

redis-cli --eval /Users/apple/Redis-lua/dslock.lua dslock,真实描述:

如果直接执行脚本,KEYS和ARVGV需要用逗号分隔。

3.使用RedisTemplate执行lua脚本:

长结果=redisTemplate.execute(

(RedisConnection连接)-connection.eval(

"脚本".getBytes(),

返回类型.INTEGER,

1、

"key".getBytes(),

"值".getBytes()));注意java类型和redis类型的对应关系如下:

/**

* @param javaType 可以是{@literal null},它转换为{@link ReturnType#STATUS}。

* @return 永远不会{@literal null}。

*/

公共静态ReturnType fromJavaType(@Nullable Class?javaType) {

if (javaType==null) {

返回ReturnType.STATUS;

}

if (javaType.isAssignableFrom(List.class)) {

返回ReturnType.MULTI;

}

if (javaType.isAssignableFrom(Boolean.class)) {

返回ReturnType.BOOLEAN;

}

if (javaType.isAssignableFrom(Long.class)) {

返回ReturnType.INTEGER;

}

返回ReturnType.VALUE;

}

8.使用注意

Redis默认的最大连接数为10000,但是受到Linux系统最大连接数的限制。在Linux 中,可以使用ulimit -a 查看打开文件的大小。

具体修改Linux命令中的最大连接数:

$ vim /etc/security/limits.conf # 添加以下字段

* 软诺文件65535

*硬nofile 65535

*软nproc 65535

*硬nproc 65535

$ vim /etc/pam.d/login # 添加以下字段

好了,文章到这里就结束啦,如果本次分享的深度解析:Redis实战技巧与心得分享和问题对您有所帮助,还望关注下本站哦!

用户评论

摩天轮的依恋

最近在学习 Redis,好用是真的好用!

    有9位网友表示赞同!

命里缺他

感觉 Redis 很强大啊,各种缓存都能轻松搞定。

    有16位网友表示赞同!

病房

想了解一下你用的 Redis 用场景?可以分享一下经验吗?

    有10位网友表示赞同!

无关风月

Redis 的性能 really fast!

    有5位网友表示赞同!

暖瞳

学习 Redis 的资料挺多的吧,哪种教学资源比较好?

    有16位网友表示赞同!

怀念·最初

我主要是用 Redis 做 session 存储,感觉效果不错。

    有8位网友表示赞同!

断秋风

缓存的技巧很多,有空可以互相交流下经验!

    有18位网友表示赞同!

喜欢梅西

Redis 作为一个 key-value 数据库,真的挺实用的。

    有16位网友表示赞同!

。婞褔vīp

记录的使用心得真不错,方便大家了解 Redis 的应用场景。

    有16位网友表示赞同!

爱你心口难开

对于初学者来说,入门 Redis 不容易吗?

    有5位网友表示赞同!

不相忘

有什么 Redis 的最佳实践可以分享吗?

    有9位网友表示赞同!

心已麻木i

Redis 的分布式存储也是一个很重要的特性吧。

    有19位网友表示赞同!

今非昔比'

我想要了解更多关于 Redis 性能优化的方法!

    有6位网友表示赞同!

£烟消云散

记录的使用心得真是太棒了,希望能看到更多精彩内容!

    有6位网友表示赞同!

寒山远黛

想了解一下你对 Redis 的未来发展趋势有什么看法?

    有11位网友表示赞同!

身影

Redis 的安全性如何保证?有需要注意的地方吗?

    有11位网友表示赞同!

眼角有泪°

有没有推荐一些好的 Redis 工具?可以提高工作效率。

    有15位网友表示赞同!

不离我

Redis 还可以使用在哪些方面呢?有什么建议吗?

    有9位网友表示赞同!

抚笙

期待看到更多关于 Redis 使用心得的分享!

    有17位网友表示赞同!

何必锁我心

学习 Redis 的时候遇到什么困难?有解决办法吗?

    有8位网友表示赞同!

◆乱世梦红颜

记录的使用心得,真是一份宝贵的财富!

    有18位网友表示赞同!

【深度解析:Redis实战技巧与心得分享】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界

免责声明:部分作品来自网友发布,或收集于互联网,目的在于更好的传递 好内容 ,正能量内容。如果侵犯了您的权益,或者您不想在本站发布,请及时联系我们,我们第一时间删除信息!

上一篇:语法学习后的困境:为何依旧难以运用? 下一篇:在家轻松赚钱:盘点十个一单一结的兼职平台,实现兼职零投入