Redis安装
安装redis
redis是基于c语言编译的
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
tar -zxf redis-4.0.6.tar.gz
yum install -y gcc
cd redis-4.0.6
make MALLOC=libc
cd src/
make install
./redis-server
cd /opt/redis-4.0.6/src/
ls *-cli
./redis-cli -h 192.168.56.100 -p 6379
安全绑定
cd ..
vi redis.conf
bind 127.0.0.1 -> bind 192.168.56.100
cd src/
./redis-server ../redis.conf
./redis-cli -h 192.168.56.100 -p 6379
Redis数据类型
支持五种数据类型
String(字符串)、hash(哈希)、list(列表)、set(集合)及zset(有序集合)。
String(字符串)
set lyx sleep
get lyx
del lyx
192.168.56.100:6379> set num 1
OK
192.168.56.100:6379> get num
"1"
192.168.56.100:6379> incr num // 数字自增
(integer) 2
192.168.56.100:6379> get num
"2"
192.168.56.100:6379> decr num // 数字自减
(integer) 1
192.168.56.100:6379> get num
"1"
192.168.56.100:6379> set num a
OK
192.168.56.100:6379> get num
"a"
192.168.56.100:6379> append num ',hello!' // 拼接字符串
(integer) 8
192.168.56.100:6379> get num
"a,hello!"
hash(哈希)
192.168.56.100:6379> HMSET people name zhangsanfeng age 200 sex male
OK
192.168.56.100:6379> HMSET people name zhangwuji age 20 sex male
OK
192.168.56.100:6379> HMGET people name
1) "zhangwuji"
192.168.56.100:6379> HMGET people age
1) "20"
192.168.56.100:6379> hmset people id 1 name zsf age 300 sex male
OK
192.168.56.100:6379> hget people name
"zsf"
192.168.56.100:6379> hget people sex
"male"
192.168.56.100:6379> hdel people sex // 删除某键
(integer) 1
192.168.56.100:6379> hget people sex
(nil)
192.168.56.100:6379> hgetall people
1) "id"
2) "1"
3) "name"
4) "zsf"
5) "age"
6) "300"
192.168.56.100:6379> hlen people // 计算键值对的数量
(integer) 3
192.168.56.100:6379> hkeys people // 拿键
1) "id"
2) "name"
3) "age"
192.168.56.100:6379> hvals people // 拿值
1) "1"
2) "zsf"
3) "300"
栈:从后往前数
192.168.56.100:6379> lpush scores 30 40 50 60 70 80 90 100
(integer) 8
192.168.56.100:6379> lrange scores 0 2
1) "100"
2) "90"
3) "80"
192.168.56.100:6379> lindex scores 3
"70"
192.168.56.100:6379> lpush xx hello
(integer) 1
192.168.56.100:6379> lpush xx world
(integer) 2
192.168.56.100:6379> lrange xx 0 2
1) "world"
2) "hello"
192.168.56.100:6379> linsert xx after world hehe
(integer) 3
192.168.56.100:6379> lrange xx 0 2
1) "world"
2) "hehe"
3) "hello"
192.168.56.100:6379> linsert scores after 70 75
(integer) 9
192.168.56.100:6379> lrange scores 0 10
1) "100"
2) "90"
3) "80"
4) "70"
5) "75"
6) "60"
7) "50"
8) "40"
9) "30"
192.168.56.100:6379> lpop scores // 移除头
"100"
192.168.56.100:6379> lrange scores 0 10
1) "90"
2) "80"
3) "70"
4) "75"
5) "60"
6) "50"
7) "40"
8) "30"
192.168.56.100:6379> lrem scores 1 75 // 删除第一个75
(integer) 1
192.168.56.100:6379> lrange scores 0 10
1) "90"
2) "80"
3) "70"
4) "60"
5) "50"
6) "40"
7) "30"
8) "75"
9) "50"
192.168.56.100:6379> ltrim scores 1 7 // 去掉首尾
OK
192.168.56.100:6379> lrange scores 0 10
1) "80"
2) "70"
3) "60"
4) "50"
5) "40"
6) "30"
7) "75"
192.168.56.100:6379> sadd test zs ls ww zl qi
(integer) 5
192.168.56.100:6379> scard test // 获取成员数
(integer) 5
192.168.56.100:6379> sadd test1 zs ls sb qj
(integer) 4
192.168.56.100:6379> sdiff test test1 // 求test-test1差集
1) "qi"
2) "zl"
3) "ww"
192.168.56.100:6379> sdiff test1 test
1) "sb"
2) "qj"
List(列表)
192.168.56.100:6379> LPUSH scores 30 40 50 60
(integer) 4
192.168.56.100:6379> LRANGE scores 0 3
1) "60"
2) "50"
3) "40"
4) "30"
192.168.56.100:6379> LRANGE scores 0 2
1) "60"
2) "50"
3) "40"
Set(集合)
192.168.56.100:6379> sadd info kkk bbb ccc kkk
(integer) 3
192.168.56.100:6379> smembers info
1) "ccc"
2) "bbb"
3) "kkk"
192.168.56.100:6379> exists info
(integer) 1
192.168.56.100:6379> expire info 5 5s过期键
(integer) 1
192.168.56.100:6379> exists info
(integer) 0
192.168.56.100:6379> smembers info
(empty list or set)
192.168.56.100:6379> select 1
OK
192.168.56.100:6379[1]> select 15
OK
192.168.56.100:6379[15]> select 16 默认有16个hash库
(error) ERR DB index is out of range
192.168.56.100:6379[15]> select 0
OK
192.168.56.100:6379> set info 'zhangsanfeng is wudang'
OK
192.168.56.100:6379> get info
"zhangsanfeng is wudang"
192.168.56.100:6379> getrange info 0 11 // 截取字符串
"zhangsanfeng"
192.168.56.100:6379> getset info 'miejueshitai is emei' // replace替换
"zhangsanfeng is wudang"
192.168.56.100:6379> get info
"miejueshitai is emei"
192.168.56.100:6379> strlen info // 统计字符长度
(integer) 20
192.168.56.100:6379> sinter test test1 // 求交集
1) "ls"
2) "zs"
192.168.56.100:6379> sunion test test1 // 求并集
1) "sb"
2) "qi"
3) "ls"
4) "zs"
5) "qj"
6) "zl"
7) "ww"
java连接Redis
public class App
{
public static void main( String[] args )
{
Jedis jedis = new Jedis("192.168.56.100");
// jedis.set("lyx","sleep");
// System.out.println(jedis.get("lyx"));
// jedis.lpush("xxx","zs","hehe","xixi");
System.out.println(jedis.lrange("xxx",0,10));
}
}
spark连接Redis
object rwRedis {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[*]")
.setAppName("myredis")
.set("spark.redis.host","192.168.56.100")
val sc = new SparkContext(conf)
// val res = sc.fromRedisKV("eee")
// val res = sc.fromRedisList("xxx")
// val res = sc.fromRedisHash("people")
val res = sc.fromRedisSet("infoxu")
res.foreach(println)
// val spark = SparkSession.builder().appName("ttt").master("local").getOrCreate()
// val jd = new Jedis("192.168.56.100")
// val dd = jd.lrange("xxx",0,10)
// val rdd = spark.sparkContext.parallelize(dd.toArray.toSeq)
// rdd.foreach(x => println(x))
}
}
Python连接Redis
import redis
if __name__ == '__main__':
handler = redis.Redis(host='192.168.56.100',port=6379,decode_responses=True)
# print(handler.get("lyx"))
df = handler.lrange("xxx",0,10)
print(df)