redis的安装及springDataRedis
發送短信功能
短信微服務已經準備好,我們就可以繼續編寫用戶中心接口了。
接口說明
這里的業務邏輯是這樣的:
-
1)我們接收頁面發送來的手機號碼
-
2)生成一個隨機驗證碼
-
3)將驗證碼保存在服務端
-
4)發送短信,將驗證碼發送到用戶手機
那么問題來了:驗證碼保存在哪里呢?
驗證碼有一定有效期,一般是5分鐘,我們可以利用Redis的過期機制來保存。
?
redis安裝和配置
安裝
-
下載安裝包課前資料提供的安裝包,或者:官網下載建議上傳到我們的home下:/usr/local/learn
-
解壓
?
tar -xvf redis-4.0.9.tar.gz編譯安裝
mv redis-4.0.9 rediscd redismake && make install配置
修改安裝目錄下的redis.conf文件
vim redis.conf修改以下配置:
#bind 127.0.0.1 # 將這行代碼注釋,監聽所有的ip地址,外網可以訪問 protected-mode no # 把yes改成no,允許外網訪問 daemonize yes # 把no改成yes,后臺運行啟動或停止
redis提供了服務端命令和客戶端命令:
-
redis-server 服務端命令,可以包含以下參數:start 啟動stop 停止
-
redis-cli 客戶端控制臺,包含參數:-h xxx 指定服務端地址,缺省值是127.0.0.1-p xxx 指定服務端端口,缺省值是6379
設置開機啟動
1) 輸入命令,新建文件
vim /etc/init.d/redis輸入下面內容:
#!/bin/sh # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database PATH=/usr/local/bin:/sbin:/usr/bin:/binREDISPORT=6379 EXEC=/usr/local/bin/redis-server REDIS_CLI=/usr/local/bin/redis-cliPIDFILE=/var/run/redis.pidCONF="/usr/local/learn/redis/redis.conf"case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $REDIS_CLI -p $REDISPORT SHUTDOWN while [ -x ${PIDFILE} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 exit 1 esac然后保存退出
注意:以下信息需要根據安裝目錄進行調整:
EXEC=/usr/local/bin/redis-server # 執行腳本的地址
REDIS_CLI=/usr/local/bin/redis-cli # 客戶端執行腳本的地址
PIDFILE=/var/run/redis.pid # 進程id文件地址
CONF="/usr/local/src/redis-3.0.2/redis.conf" #配置文件地址
2)設置權限
chmod 755 /etc/init.d/redis3)啟動測試
/etc/init.d/redis start啟動成功會提示如下信息:
Starting Redis server... Redis is running...4)設置開機自啟動
chkconfig --add /etc/init.d/redis chkconfig redis onSpring Data Redis
官網:http://projects.spring.io/spring-data-redis/
Spring Data Redis,是Spring Data 家族的一部分。 對Jedis客戶端進行了封裝,與spring進行了整合。可以非常方便的來實現redis的配置和操作。
RedisTemplate基本操作
Spring Data Redis 提供了一個工具類:RedisTemplate。里面封裝了對于Redis的五種數據結構的各種操作,包括:
-
redisTemplate.opsForValue() :操作字符串
-
redisTemplate.opsForHash() :操作hash
-
redisTemplate.opsForList():操作list
-
redisTemplate.opsForSet():操作set
-
redisTemplate.opsForZSet():操作zset
其它一些通用命令,如expire,可以通過redisTemplate.xx()來直接調用
5種結構:
-
String:等同于java中的,Map<String,String>
-
list:等同于java中的Map<String,List<String>>
-
set:等同于java中的Map<String,Set<String>>
-
sort_set:可排序的set
-
hash:等同于java中的:`Map<String,Map<String,String>>
StringRedisTemplate
RedisTemplate在創建時,可以指定其泛型類型:
-
K:代表key 的數據類型
-
V: 代表value的數據類型
注意:這里的類型不是Redis中存儲的數據類型,而是Java中的數據類型,RedisTemplate會自動將Java類型轉為Redis支持的數據類型:字符串、字節、二進制等等。
不過RedisTemplate默認會采用JDK自帶的序列化(Serialize)來對對象進行轉換。生成的數據十分龐大,因此一般我們都會指定key和value為String類型,這樣就由我們自己把對象序列化為json字符串來存儲即可。
?
因為大部分情況下,我們都會使用key和value都為String的RedisTemplate,因此Spring就默認提供了這樣一個實現:
測試
需要在項目中引入Redis啟動器:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>然后在配置文件中指定Redis地址:
spring:redis:host: 192.168.56.101?
總結
以上是生活随笔為你收集整理的redis的安装及springDataRedis的全部內容,希望文章能夠幫你解決所遇到的問題。