欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux系统中 redis 保存数据的5种形式 linux后端模式启动 jedis无法通过IP地址和端口号访问如何修改linux防火墙

程序员文章站 2022-08-03 14:57:16
vim修改redis.conf配置文件(我的已经复制到虚拟机的/usr/local/redis/bin目录下)为daemonize yes, 以后端模式启动 ./redis-server redis.confbin目录下运行 ./redis-cli连接客户端 输入ping回应pang成功 Strin ......

vim修改redis.conf配置文件(我的已经复制到虚拟机的/usr/local/redis/bin目录下)为daemonize yes, 以后端模式启动 ./redis-server redis.conf
bin目录下运行 ./redis-cli连接客户端 输入ping回应pang成功
=================================================================================================================================================================
String的形式
set name xiaoming
get
是String操作也是后来key的操作
del 后面接键名 不关什么串 集合都干掉
keys * 可以看所有key的值 存了些什么 也可 keys my* 也可keys my?????

追加判断建 exists num 判断num存在吗? rename num num1 重命名键值 expire test 10 (先set test xiaohong 10秒后再get发现已逝世)
ttl test 还剩多久活-2 表示死了 -1表示没设置过期
type num 返回类型的 String Set SortedSet List


incr
decr
incrby num 5
decrby num 5
append num any (追加成新字符串)
=================================================================================================================================================================
HashMap的形式
hset 外围键名 内部键名 值
hget 外围键名 内部键名 值
hmset 外名 内名 值 内名2 值 内名3 值...
HMGET user1 name age email phone address
hgetall 外围键名
hdel user1 name (使用del会删除整个user1)
hincrby user1 age 5
hexists user1 age
hlen user1
hkeys user1
hvals user1
=================================================================================================================================================================
linux 中redis的第三种 链表LinkedList集合形式 有序不唯一

lpush 1 2 3 4 5 从左压栈
rpush a b c d e 从右压栈
lrange mylist1 0 9 从左遍历
不知道有多少个呢?如何要全部?
lrange mylist1 0 -1 (负数表示倒数)
不知道多少,剩一个不要
lrange mylist1 0 -2
lpop mylist1 从左侧弹出
rpop mylist1 从右侧弹出
llen mylist1 集合长度
lpushx mylist1 f 仅当mylist1存在时从左存入一个
rpushx mylist1 f 仅当mylist1存在时从右存入一个
lrem mylist1 1 1 删除集合中的1个元素 删除值为左起第一个1
lrem mylist1 2 9 删除集合中的2个元素 删除值为左起前两个9
lrem mylist1 -1 f 删除集合中的1个元素 删除值为右起第一个f
lrem mylist1 0 f 删除所有f
linsert mylist1 before a x 在a前插
linsert mylist1 after a x 在a后插
rpoplpush mylist1 mylist2 从集合1的右边弹出一个放到集合2的左边 (这个的作用涉及到多线程的生产者消费者模型-别人管生产任务,你管消费任务,线程池消化任务) (发邮件我还没有做)
========================================================================================================================================================================
Set集合形式
sadd myset a b c c d e e 集合无序 唯一特点
srem myset b 删除一条
SMEMBERS myset 遍历
sismember myset a 判断a是集合的成员
---------------------------------------------------
sadd zhangsanset lisi wangwu tianqi tom
sadd lucyset tom rose jack
找不同 zhangsan有lucy没有
sdiff zhangsanset lucyset
找不同 lucy有zhangsan没有
sdiff lucyset zhangsanset
求交集
sinter zhangsanset lucyset
求合集
sunion zhangsanset lucyset
scard zhangsanset 求集合个数
srandmember zhangsanset 随机抽取
--------------------------------------
前边的三个集合求完没有存储结果
sdiffstore jieguo zhangsanset lucyset
sinterstore jieguo zhangsanset lucyset
sunionstore jieguo zhangsanset lucyset
===============================================================================================================================================================
SortedSet形式
zadd myset1 21 zhangsan 38 lisi 308 wangu 每个数据前有个权重做排序用 修改就是再添加一个用新值
zrange myset1 0 -1 遍历与有序链表相同
zrange myset1 0 -1 withscores 遍历与有序链表相同
zscore myset1 zhangsan 张三多少分
zcard myset1 获取大小
zrem myset1 lisi 删除某个元素
zrevrange myset1 0 -1 反向遍历 从高到低
zremrangebyrank myset1 0 1 从开始到结束的删除
zremrangebyscore myset1 30 40 从开始到结束的分数删除
zrangebyscore myset1 100 150 limit 0 2根据分数排序查询 只要前两条
zincrby myset1 3 xiaohu 给谁增长3分发帖经验
zcount myset1 100 150 分数之间有多少人
zrank myset1 xiaohu 从小到大排第几
zrevrank myset1 xiaohu 从大到小排第几 0表示第一
===============================================================================================================================================================
jedis java连接redis的jar包导入后set get方法操作数据发现Connection Excepiton 修改Linux防火墙 增加端口成功(同Tomcat 外地IP无法访问)

Linux 安装Tomcat 配置防火墙后,本地可以访问,外地通过IP无法访问,防火墙配置没有起作用原因
(配置Linux防火墙 vim /etc/sysconfig/iptables 增加端口 重启服务service iptables restart)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
这句没有放在适当的位置
应该放在22端口的下边

JedisPool(jedisPoolConfig,"192.168.199.129",6379)得到的jedis.set("things","写中文") 在jedis服务器端会中文显示16进制?

//这个方法是加载类路径下的资源 src下的
properties.load(RedisUtils.class.getClassLoader().getResourceAsStream("redis.properties"));

补充:
redis也是有多数据库的 在mysql下有use切换数据库 在redis下使用 select 1 可以在0号库move name 1 把内容移到1号库 info查看单机还是集群模式standalone linux版本各种信息
dbsize 数据库有多少个key flushdb清空数据库
订阅subscribe cctv5与发布 publish cctv5 hahaha 双击再建一个连接 俩个连接做不同的事一个订阅一个发布
事务的特性:acid 原子性 (Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

--------------------------------------------------------------
redis的事务 redis的3条指令要挨着执行就是事务了 redis是单线程的 使用multi命令让数据在queued队列中等待一起exec
当发生错误 在set num4 xiaoming 后incr num4发生错误 redis根本没有回滚 该执行还是执行了 有个discard不是回滚是撤销上一条指令

redis的持久化,当redis进程被kill -9 27921 后,在启动服务启动客户端 发现数据还在 因为在安装目录有一个文件dump.rdb每个一段时间把数据存在硬盘上
他的奥秘在redis.conf配置文件中有一个 save 900 1 save 300 10 save 60 10000
redis 可以在配置文件中配置密码 requiredpass 输密码