在服务器上安装Redis及其使用笔记
准备
自己有购买云服务器的小伙伴可以将redis安装到服务器上,跟你安装到windows上的虚拟机是一样的。
1、进入redis官网下载最新的版本
2、因为redis运行需要gcc环境,我们可以通过Xshell操作远程服务器通过yum命令来安装
yum install centos-release-scl-utils-build
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash
安装完可以通过命令gcc --version 查看版本信息
3、新建一个文件夹存放redis
mkdir redisfile
4、新建文件传输窗口将下载的压缩包上传到服务器
查看已经上传的压缩包
[root@VM-12-13-centos /]# cd redisfile/
[root@VM-12-13-centos redisfile]# ll
total 2928
-rw-r--r-- 1 root root 2994242 Jul 31 16:29 redis-7.0.4.tar.gz
[root@VM-12-13-centos redisfile]#
安装
1、解压
cd /redisfile
tar -zxvf redis-7.0.4.tar.gz
2、解压完成后,进入redis-7.0.4 使用make命令进行编译
cd redis-7.0.4
make
没有gcc环境会报错,-Jemalloc/jemalloc.h:没有那个文件,解决:执行make distclean 命令,等待gcc安装完成,看到版本信息后,再次执行make
编译完成
3、跳过make test 继续执行make install
完成上述步骤已经安装成功了
4、查看安装目录,默认的安装路径在/usr/local/bin
cd /usr/local/bin
5、目录结构
redis-check-aof:修复有问题的AOF文件,redis-benchmark:性能测试文件
使用
- 前台启动(不推荐,前台启动,命令行窗口不能关闭,否则服务器停止)
- 后台启动(推荐)
后台启动
1、备份redis.conf ,复制一份到其他目录
2、把复制户的redis.conf 文件的 daemonize no 改成yes
vim /redisfile/myredis/redis.conf
保存,退出
:wq
启动
cd /usr/local/bin/
redis-server /redisfile/myredis/redis.conf
查看进程:ps -ef | grep redis
测试联通状态;
redis-cli
ping //出现PONG,说明是正常的
关闭(多种关闭方式)
shutdown
//exit
//或着找到对应的进程号,kill -9 13720
redis相关知识介绍
redis默认有0~15共16个数据库,可以通过select index切换,比如我们切换到15号
select 15
- 默认初始使用0号库
- 使用命令select index切换,eg:select 15
- 统一密码管理,所有的库密码相同
- dbsize查看当前数据库的key数量
- flush清空当前库
- flushall通杀全部库
- redis是单线程+多路IO复用技术
- memcache是多线程+锁
Redis与Memcache三点不同:支持多数据类型,支持持久化,单线程+多路IO复用
Redis键–key
- keys * ——查看当前所有key(匹配:keys *1)
- exists key——判断某个key是否存在
- type key —— 查看key类型
- del key——删除指定的key数据
- unlink key —— 根据value选择非阻塞删除(仅仅将keys从keyspace元数据中删除,真正删除会在后面异步操作)
- expire key time——为给定的key设置过期时间(time 单位为秒,eg:expire k1 10)
- ttl key 查看key的还有多少秒过期,返回值:-1表示永不过期,-2表示已经过期。
- select命令 ——切换数据库
- dbsize——查看当前数据库的key的数量
10.flushdb——清空当前库,flushall——通杀所有库
1、常用五大数据类型
字符串(String)
1、简介
- String是Redis最基本的类型,与MeMcached类似,一个key对应一个value。
- String类型是二进制安全的,意味着Redis的string可以包含任何数据类型,比如jpg图片或者序列化的对象。
- String类型是Redis最基本的数据类型,一个Redis中字符穿value最多可以是512M
2、常用命令
set <key> <value> *NX: 当数据库中key不存在时,可以将key-value添加到数据库。*XX:当数据库中key存在时,可以将key-value添加到数据库,与NX参数互斥。*EX:key的超时秒数。*PX:key的超时毫秒数,与EX互斥。get <key> :查询对应key的value值。append <key> <value> 将给定的<value>追加到原值的末尾。(当value为多个单词的字符串时用双引号引起来)strlen <key>:获取值的长度。setnx <key><value>只有在key不存在时,设置为key的值。incr <key> 将key中存储的数字(原子操作值两个线程间互不影响)增1,只能对数字值操作,如果为空,新增值为1decr <key> 将key中存储的数字值减1,只能对数字操作,如果为空,性增值为-1incrby/decrby <key> <步长> 将key中存储的数字值增减,自定义步长。mset <key1> <key2> …… :同时设置多个值。mget <key1> <key2> …… :同时获取一个或多个值。msetnx <key1> <key2> ……:同时设置一个或多个key-value对,当且仅当所有给定的key都不存在。(原子性,有一个失败则都失败。)注意:java中两个线程的i++操作不是不是原子操作,操作数的结果为(线程数~线程数*单线程执行次数)所谓原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何context switch(切换到另一个线程)(1)在单线程中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只发生于指令之间。(2)在多线程中,不能被其他进程(线程)打断的操作就叫原子操作。(Redis单命令的原子性主要得益于Redis的单线程)getrange <key> <起始位置> <结束位置>:获得值的范围,类似java中的substring,前包,后包。setrange <key> <起始位置> <结束位置>:用<value>覆写所存储的字符串值,从<起始位置>开始(索引值从0开始)setex <key> <过期时间> <value> 设置键值的同时设置过期时间,单位秒。getset <key> <value> 以新换旧,设置了新值同时获得旧值。
[root@VM-12-13-centos ~]# redis-cli
127.0.0.1:6379> keys *
1) "k3"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set k1 jack
OK
127.0.0.1:6379> set k2 locy
OK
127.0.0.1:6379> set k3 daming
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> get k1
"jack"
127.0.0.1:6379> get k2
"locy"
127.0.0.1:6379> append k1 is a handsome boy
(error) ERR wrong number of arguments for 'append' command
127.0.0.1:6379> append k1 "is a handsome boy"
(integer) 21
127.0.0.1:6379> get k1
"jackis a handsome boy"
127.0.0.1:6379> strlen k1
(integer) 21
127.0.0.1:6379> strlen k2
(integer) 4
127.0.0.1:6379> setnx k1 v2
(integer) 0
127.0.0.1:6379> get k1
"jackis a handsome boy"
127.0.0.1:6379> setnx k4 v200
(integer) 1
127.0.0.1:6379> incr k4
(error) ERR value is not an integer or out of range
127.0.0.1:6379> set k5 100
OK
127.0.0.1:6379> get k5
"100"
127.0.0.1:6379> incr k5
(integer) 101
127.0.0.1:6379> decr k5
(integer) 100
3、底层数据结构
String的数据结构,为简单动态字符穿(SDS) ,是可以修改的字符串,内部结构实现类似于java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。
列表List
简介:单键多值
- Redis列表是简单的字符串列表,按照插入顺序排序,你可以通过添加一个元素到列表的头部(左边)或者尾部(右边)。
- 它的底层实际是双向链表,对两端的操作性能很高,通过索引下标操作中间的节点性能会较差。
常用命令
lpush/rpush <key> <value1> <value2>……从左边/右边插入一个或多个值。
lpop/rpop <key> 从左边/右边吐出一个值,值在键在,值光键亡rpoplpush <key1> <key2> :从<key1>列表右边吐出一个值,插到<key2>列表的左边。
lrange <key> <start> <stop> :按照索引下标获得元素(从左到右)lrange mylist 0 -1 :0表示左边第一个,-1表示右边第一个(0-1 表示获取所有)
lindex <key> <index> 按照索引下标获得元素(从左到右)
llen <key> 获得列表长度linsert <key> before/after <value><newvlue>在<value>的前面/后面插入<newvalue>插入值。
lrem <key> <n> <value> 从左边删除n个value(从左到右)
lset <key><index><value>将列表key下标为index的值替换为value。
数据结构
List的数据结构为快速链表quickList,首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也就是压缩列表。
它将所有的元素紧挨着一起存储,分配的是一块连续的内存。
当数据量比较多的时候才会改成quicklist。
因为普通的链表需要的附加指针空间太大,会比较浪费空间,比如这个列表里存的只是int类型的数据,结构上还需要两个额外的只针prev和next。
Set集合
1、简介
2、常用命令
sadd <key> <value1> <value2> ……:将一个或多个member元素加入到集合key中,已经存在的member元素将被忽略。
smembers <key> 取出该集合的所有值。
sismember <key> <value> :判断集合《key》是否含有该<value> 值,有1,没有0.
scard <key> :返回该集合的元素个数。
srem <key> <value1> <value2>…… :删除集合中的某个元素。
spop <key> 随机从该集合中吐出一个值。
srandmember <key> <n> :随机从该集合中取出n个值,不会从集合中删除。smove <source> <destination> value :把集合中一个值从一个集合移动到另一个集合。
sinter <key1> <key2> 返回两个集合的交集。
sunion <key1> <key2> 返回两个集合的并集。
sdiff <key1><key2> 返回两个集合的差集元素(key1中的,不包含key2中的)
使用;
127.0.0.1:6379> sadd set1 m1 m2 m3 m4
(integer) 4
127.0.0.1:6379> smembers set1
1) "m2"
2) "m1"
3) "m4"
4) "m3"
127.0.0.1:6379> sismember set1 m2
(integer) 1
127.0.0.1:6379> sismember set1 m9
(integer) 0
127.0.0.1:6379> scard set1
(integer) 4
127.0.0.1:6379> srem set1 m1 m2
(integer) 2
127.0.0.1:6379> scard set1
(integer) 2
127.0.0.1:6379> sadd set1 m1 m2 m3 m4
(integer) 2
127.0.0.1:6379> smembers set1
1) "m4"
2) "m3"
3) "m1"
4) "m2"
127.0.0.1:6379> spop m3
(nil)
127.0.0.1:6379> spop set1
"m3"
127.0.0.1:6379> spop set1
"m1"
127.0.0.1:6379> srandmember <key> 2
(empty array)
127.0.0.1:6379> srandmember set1 2
1) "m2"
2) "m4"
127.0.0.1:6379> scard set1
(integer) 2
127.0.0.1:6379> sadd set2 m1 m2 m3 m4 m5 m6 m7 s8 s9
(integer) 9
127.0.0.1:6379> sadd set3 s1 s2 s3 s4 s5
(integer) 5
127.0.0.1:6379> smove set3 set2 s3
(integer) 1
127.0.0.1:6379> smembers k2
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> smembers set21) "m3"2) "m6"3) "m5"4) "m1"5) "m2"6) "m4"7) "s8"8) "m7"9) "s3"
10) "s9"
127.0.0.1:6379> sinter set2 set3
(empty array)
127.0.0.1:6379> sinter set2 set1
1) "m2"
2) "m4"
127.0.0.1:6379> sunion set2 set31) "s1"2) "s8"3) "s4"4) "m3"5) "m6"6) "s2"7) "m7"8) "s5"9) "m5"
10) "s3"
11) "s9"
12) "m2"
13) "m1"
14) "m4"
127.0.0.1:6379> sdiff set2 set1
1) "s8"
2) "m7"
3) "m6"
4) "m3"
5) "s3"
6) "m5"
7) "s9"
8) "m1"
3、数据结构
Set数据结构是dict字典,字典是用哈希实现的。java中的hashSet的内部实现用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它内部也是用hash结构,所有的value都指向同一个内部值。
Redis的Hash结构
1、简介
- Redis hash是一个键值对集合。
- Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
- 类似java里面的Map<String,Object>
2、常用命令
hset <key> <field> <value> 给<key>集合中的<field>键赋值<value>
hget <key1> <fielld> 从<key1>集合<field> 取出 value
hmset <key1> <field1> <value1> <key2> <field2> <value2> ……: 批量设置hash的值。
hexists <key1> <field> 查看哈希表key中,给定域field是否存在。
hkeys <key>列出该hash集合的所有field
hvals <key>列出该hash集合的所有value
hincrby <key><field><increment> 为哈希表key中的域field的值加上增量x /-x
hsetnx <key><field><value> 将哈希表key中的域field的值设置为value,当且仅当域field不存在。
eg:
[root@VM-12-13-centos ~]# redis-cli
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> hset user:1001 id 1
(integer) 1
127.0.0.1:6379> hset user:1001 name zhangsan
(integer) 1
127.0.0.1:6379> hget user:1001 id
"1"
127.0.0.1:6379> hget user:1001 name
"zhangsan"
127.0.0.1:6379> hmset user:1002 id 2 name lisi age 30
OK
127.0.0.1:6379> hget user:1002
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget user:1002 id
"2"
127.0.0.1:6379> hget user:1002 name
"\x8dlisi"
127.0.0.1:6379> hexists user1002 id
(integer) 0
127.0.0.1:6379> hexists user:1002 id
(integer) 1
127.0.0.1:6379> hkeys user:1002
1) "id"
2) "name"
3) "age"
127.0.0.1:6379> hkeys user:1001
1) "id"
2) "name"
127.0.0.1:6379> hvals user:1002
1) "2"
2) "\x8dlisi"
3) "30"
127.0.0.1:6379> hvals user:1001
1) "1"
2) "zhangsan"
127.0.0.1:6379> hincrby user:1002 age 2
(integer) 32
127.0.0.1:6379> hincrby user:1002 age 3
(integer) 35
127.0.0.1:6379> hsetnx user:1002 age 40
(integer) 0
127.0.0.1:6379> hsetnx user:1002 sex men
(integer) 1
127.0.0.1:6379> hkeys user:1002
1) "id"
2) "name"
3) "age"
4) "sex"
3、数据结构
Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。
Redis有序 集合Zset
1、简介
Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。
不同之处时有序集合的每个成员都关联了一个评分(score) ,这个评分被用来按照从最低分到最高分的方式排序集合中的成员,集合的成员是唯一的,但是评分可以是重复的。
因为元素是有序的,所以你也可以很快的根据评分或者次序来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此,你能够使用有序集合作为一个没有重复成员的只能列表。
2、常用命令
zadd <key> <score1> <value> <score2> <vaule2> …… :将一个或者多个member元素及其score值加入到有序集key当中。
zrange <key> <stat> <stop> [WITHSCORE] :返回有序集key中,下标在start stop之间的元素,带WITHSCORE,可以让分数一起和值返回到结果集。
zrangebyscore key min max [withscores] [limit offset count]:返回有序集key中,所有score值介于min和max之间 ,(包括都等于min或max的成员)zrevrangebyscore key max min [withscores] [limit off set count]
同上,改为从大到小排列。
zincrby <key> <increment> <value> 为元素的score加上增量。
zrem <key> <value> :删除该集合下,指定值的元素。
zcount <key><min><max> 统计该集合,分数区间内的元素个数。
zrank <key> <value> 返回该值在集合中的排名,从0开始。
利用redis制作排行榜
zrange top 0 -1 withscores
3、数据结构
- hash:hash的作用就是关联元素value和权重score,保障value的唯一性,可以通过元素value找到相应的score值。
- 跳跃表:跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。
跳跃表(跳表)
简介:
有序集合在生活中比较常见,例如根据成绩对学生排名,根据得分对玩家排名等,对于有序集合的底层实现,可以使用数组,平衡树,链表等,数据不便元素插入,删除;平衡树或红黑树虽然效率高但结构复杂;链表查询需要遍历所有效率低,Redis使用跳跃表,效率堪比红黑树,且结构比红黑树简单。
Redis配置文件redis.conf
units 配置大小单位,开头定义了一些基本单位,只支持bytes,不支持bit大小写不敏感
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
INCLUDES 包含
类似于jsp中的include ,多实例的情况可以把公用的配置文件提取出来。
bind 网络相关的配置
默认情况下 bind = 127.0.0.1 只能接受本机的访问请求
不写的情况下,无限制接收任何IP地址的访问。即支持远程连接。
生产环境下肯定要写你应用服务器的地址,服务器是需要远程访问的,所以需要将其注释掉。
如果开启了protected-mode,那么在没有设定bind ip且没有密码的情况下,Redis只允许接收本机的相应。反之支持远程访问。
Port 端口
默认端口是6379
tcp-backlog
- 设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列+已经完成三次握手队列。
- 在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。
- 注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值(128) ,所以需要确认增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值来达到想要的效果。
pidprofile
记录与redis运行的进程号相关。
loglevel
日志级别:notice、debug、verbose、warning四种级别
logfile
设置日志文件输出的路径,默认为空。
databases
redis默认的数据库数量。
security 安全
- 访问密码的查看,设置和取消。
- 在命令中设置密码,只是临时的,重启redis服务器,密码就 还原了。
LIMITS 限制 - 设置redis同时可以与多少个客户端进行连接。
- 默认情况下为10000个客户端。
- 如果达到了限制,redis则会拒绝新的连接请求,并向这些连接请求方发出“max number of clients reached"以做回应。
maxmemory - 建议必须设置,否则,将内存占满,造成服务器宕机。
- 设置redis可以使用的内存量,一旦 到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory- policy来指定。
发布和订阅
简介:
Redis发布订阅(pub/sub)是一种消息通信模式,发送者发送信息,订阅者接收信息。
redis客户端可以订阅任意数量的频道。
/usr/local/bin/redis-cli //开启两个客户端
SUBSCRIBE channel1 //客户端1订阅频道channel1
publish channel1 "hello redis" //客户端2发送消息"hello redis"
发布:
订阅:
Redis新数据类型
Bitmaps
关于Bitmaps的相关搜索1
关于Bitmaps的相关搜索2
HyperLogLog
简介
在工作当中,我们经常会遇到与统计相关的功能需求,比如统计网站,PV(PageView页面访问量),可以使用Redis的incr、incrby轻松实现。
但是像UV独立访客,独立IP数、搜索记录数等需要去重和计数问题如何 解决?这种求集合中不重复的元素个数的问题称为基数问题。
解决方案:
(1) 数据存储在MySQL表中,使用distinct count计算不重复的个数。
(2)使用Redis提供的hash 、set、 bitmaps等数据结构来处理。
以上的方案结果是精确的,但是随着数据不断增加,导致占用内存空间越来越大,对于非常大的数据集是不切实际的。
能否能够降低一定的精度来平衡存储空间?Redis推出了HyperLogLog
Redis HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需要的空间总是固定的,并且是很小的。
在Redis里面,每个HyperLogLog键只需要花费12kb内存,就可以计算接近2^64个不同元素的基数,这和计算基数时,元素越多耗费内存越多的集合形成鲜明的对比。
但是,因为HyperLogLog只会根据输入元素来计算基数,而不会存储输入的元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素。
命令
格式
pfadd <key> <element> ……
作用:添加指定元素到HyperLogLog中。
实例:成功返回1,不成功返回0
[root@VM-12-13-centos ~]# redis-server /redisfile/myredis/redis.conf
[root@VM-12-13-centos ~]# /usr/local/bin/redis-cli
127.0.0.1:6379> pfadd program "java"
(integer) 1
127.0.0.1:6379> pfadd program "php"
(integer) 1
127.0.0.1:6379> pfadd program "java"
(integer) 0
127.0.0.1:6379> pfadd program "c++" "mysql"
(integer) 1
pfcount <key> //计算HLL的近似基数,可以计算多个HLL,比如用HLL存储每天的UV,计算一周的UV可以使用7天的UV合并计算即可。prmerge <destey> <sourcekey> [sourcekey] //将一个或多个HLL合并后的结果存储到另一个HLL中,比如每月活跃用户可以使用每天的活跃用户合并计算可得。
Geospatial
简介
Redis中增加了对GEO类型的支持,GEO,Geographic,地理信息的缩写。
该类型,就是元素的2维坐标,在地图上就是经纬度,redis基于该类型,提供 了经纬度设置、查询、范围查询、距离查询、经纬度hash等常见操作。
命令
1、geoadd
格式:geoadd [logitude latitude member……]
说明:添加地理位置(经度-纬度-名称)
实例
geoadd china:city 121.47 31.23 shanghai
geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen 116.38 39.90 beijing ……
两极无法添加,一般会下载城市数据,直接通过java程序一次导入。
有效的经纬度从-180° 到 180° ,有效纬度从-85.05112878°到85.05112878°
当坐标位置超出指定范围时,该命令会返回一个错误。
已添加的数据,是无法再添加 的。
2、geopos
格式:geopos [member ……]
说明:获取指定的地区坐标值。
geopos china:city shanghai
3、geodist
格式:
geodist <key> <member1> <menber2> [m|mk|ft|mi]
说明:获取两个位置之间的直线距离
127.0.0.1:6379> geodist china:city guangzhou chongqing km
"1666.9766"
m:米
km:千米
mi:英里
ft:英尺
默认用米作为单位。
4、georadius
格式:
georadius key logitude latitude radius m|km|ft|mi
说明:以给定的经纬度为中心找出某一半径内的元素。
实例:
127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
Redis_Jedis连接使用
使用Jedis连接远程的Redis时,需要将redis.conf 文件中的bind 127.0.0.0 注释掉,关闭保护模式 修改为: protected-mode no,若无法连接则是服务器端口没有开放6379端口。开放端口即可(若是虚拟机中的关闭防火墙并重启redis)
1、引入依赖
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version></dependency>
2、新建测试类
import redis.clients.jedis.Jedis;public class jedisTest {public static void main(String[] args) {// 创建Jedis对象Jedis jedis = new Jedis("IP地址",6379);
// 测试String msg = jedis.ping();System.out.println(msg);
//输出结果为PONG则表示成功}// 操作key@Testpublic void demo1() {Jedis jedis = new Jedis("43.142.131.251", 6379);jedis.set("key1","v1");jedis.set("key2","v2");jedis.set("key3","v3");Set<String> keys = jedis.keys("*");System.out.println(keys.size());for (String key : keys) {System.out.println("key------->" + key);}System.out.println(jedis.exists("key1"));System.out.println(jedis.ttl("key1"));System.out.println(jedis.get("key1"));// 设置多个key-valuejedis.mset("k1","v1","k2","v2");List<String> mget = jedis.mget("k1","k2");System.out.println(mget);}// 操作list@Testpublic void demo2() {Jedis jedis = new Jedis("43.142.131.251", 6379);jedis.lpush("kk1","lucy","mary","jack");List<String> value = jedis.lrange("kk1",0,-1);System.out.println(value);}// 操作set@Testpublic void demo3() {Jedis jedis = new Jedis("43.142.131.251", 6379);jedis.sadd("name","lisi","jack");Set<String> strings = jedis.smembers("name");for (String string:strings) {System.out.println(string);}}// 操作hash@Testpublic void demo4() {Jedis jedis = new Jedis("43.142.131.251", 6379);jedis.hset("users","age","20");jedis.hset("users","name","liHua");String hget1 = jedis.hget("users","age");String hget2 = jedis.hget("users","name");System.out.println(hget1+hget2);}// 操作zset@Testpublic void demo5() {Jedis jedis = new Jedis("43.142.131.251", 6379);jedis.zadd("china",100,"shanghai");Set<String> china = jedis.zrange("china", 0, -1);System.out.println(china);}}
在服务器上安装Redis及其使用笔记相关推荐
- centos6安装mysql并远程连接_阿里云服务器上安装redis并实现远程连接
一.概述 之前一直将redis安装在本地,为了在服务器上使用redis进行数据的存储,需要在服务器端进行redis的安装,本次使用的是阿里云服务器,由于是第一安装,在安装及后续远程连接过程中也遇到一些 ...
- du -sh 如何找到最大的文件夹_小白必看!手把手教你如何在linux上安装redis数据库...
首先我们要清楚redis是什么? redis是一种非关系型数据库,它与MySQL的这种关系型数据库不同,MySQL是将数据存储在磁盘中,而redis是储存在内存中.一般很多公司都是使用MySQL+re ...
- 在Windows上安装Redis教程,超简单!!!
文章目录 1. Redis 概念 1.1 什么是 Redis ? 1.2 Redis 在前后端分离中的作用 2. 在 Windows 上安装 Redis 2.1 安装 WLS 2(适用于 Linux ...
- 在 Win10 上安装 Redis 4.0 的两种姿势
Redis 是完全开源免费,遵守 BSD 协议的一个高性能的 key-value 数据库. 1. 使用 msi 安装 Redis 2. 在 WSL 上安装 Redis 2.1 准备工作 2.2 安装 ...
- onlyoffice文件服务器安装,在本地服务器上安装Windows版ONLYOFFICE Integration Edition
介绍 Integration Edition允许您在本地服务器上安装Document Server,并将在线编辑器与Web应用程序集成. Document Server是一个在线办公套件,包括用于文本 ...
- 阿里云服务器上安装EMQ,并利用mqttfx连接使用EMQ
阿里云个人windows云服务器上安装EMQ服务,并利用mqttfx工具连接使用EMQ服务器 前言 一.如何拥有属于自己的阿里云Windows云服务器 1.阿里云ECS云服务器获取途径 2.阿里云云服 ...
- 阿里云服务器 Ubuntu安装Redis
阿里云服务器 Ubuntu安装Redis 第一步,下载Redis 首先,去Redis官网下载最新版的Redis压缩包,下载地址Redis,目前最新版的Redis稳定版本已经更新到6.2.6了 第二步, ...
- 解决云服务器上的redis端口不通以及设置redis的bind地址后启动失败问题
---------------------------------------------------2021-11-20更新------------------------------------- ...
- 在Linux系统上安装Redis客户端报错:In file included from adlist.c:34 zmalloc.h:50:31: error: jemalloc......
在Centos6.9系统上安装redis客户端时报错,步骤如下: 1.下载redis客户端源码包: wget http://download.redis.io/releases/redis-3.0. ...
最新文章
- LAMP 关键数据集锦技术选项参考
- 如何隐藏system函数的窗口
- vs2013 error MSB8031 MBCSMFC问题的解决
- impdp导入数据时出现BUG
- 这套前端可视化框架,让数据栩栩如生!
- 第十五天 图【下】(大结局)
- Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析
- Join的实现步骤 以及连接的概念
- Android:实现弹窗效果
- 数学分析(9): 不定积分
- 液晶显示屏工作原理和点亮屏幕
- 百度云语音合成 Python SDK
- @Adaptive注解
- 计算机开机慢更新配置,系统开机慢?教你如何提高电脑开机速度!
- Git 技术篇 - github镜像推荐,无需翻墙实现飞速访问github官网
- 大佬带你看源码!BTAJ大厂最新面试题汇集,已拿offer附真题解析
- 未来人工智能产品的思维,主要有哪几个趋势
- # Windows下关于安装Geany编辑器过程中的一点小发现(可能对初次安装的人有用)
- 自定义Drawable实现灵动的红鲤鱼动画(上篇)
- 【网站】IIS配置/搭建PHP环境的网站教程
热门文章
- IT 认证考试--软考--(中级项目)嵌入式系统设计师2:考试大纲【含免帐号免积分下载链接】
- 油田选址问题matlab,油田选址问题完整解答(内附完整代码)
- Crasheye使用 - 更强大的【搜索】
- PHP Web程序设计与Ajax技术pdf
- 优秀的Linux文本编辑器
- signature=152c7128f5309ebd73e4a1d7e8516c1b,交流传动内燃机逻辑控制单元的开发设计
- 一个 DAG 工作流引擎的设计实现源代码实例
- 机器学习实战-2.1
- HTML5基础教程(20)Video(视频)
- java mini_miniui_java - WEB源码|源代码 - 源码中国